package com.webank.wecross.stub.bcos.performance.hellowecross.proxy;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import org.fisco.bcos.channel.client.TransactionSucCallback;
import org.fisco.bcos.web3j.abi.FunctionReturnDecoder;
import org.fisco.bcos.web3j.abi.TypeReference;
import org.fisco.bcos.web3j.abi.datatypes.Address;
import org.fisco.bcos.web3j.abi.datatypes.DynamicArray;
import org.fisco.bcos.web3j.abi.datatypes.DynamicBytes;
import org.fisco.bcos.web3j.abi.datatypes.Function;
import org.fisco.bcos.web3j.abi.datatypes.Type;
import org.fisco.bcos.web3j.abi.datatypes.Utf8String;
import org.fisco.bcos.web3j.abi.datatypes.generated.Uint256;
import org.fisco.bcos.web3j.crypto.Credentials;
import org.fisco.bcos.web3j.crypto.EncryptType;
import org.fisco.bcos.web3j.protocol.Web3j;
import org.fisco.bcos.web3j.protocol.core.RemoteCall;
import org.fisco.bcos.web3j.protocol.core.methods.response.TransactionReceipt;
import org.fisco.bcos.web3j.tuples.generated.Tuple1;
import org.fisco.bcos.web3j.tuples.generated.Tuple2;
import org.fisco.bcos.web3j.tuples.generated.Tuple4;
import org.fisco.bcos.web3j.tuples.generated.Tuple5;
import org.fisco.bcos.web3j.tx.Contract;
import org.fisco.bcos.web3j.tx.TransactionManager;
import org.fisco.bcos.web3j.tx.gas.ContractGasProvider;
import org.fisco.bcos.web3j.tx.txdecode.TransactionDecoder;

/**
 * Auto generated code.
 *
 * <p><strong>Do not modify!</strong>
 *
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.fisco.bcos.web3j.codegen.SolidityFunctionWrapperGenerator in the <a
 * href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version none.
 */
@SuppressWarnings("unchecked")
public class WeCrossProxy extends Contract {
    public static final String[] BINARY_ARRAY = {
        "60806040526000600455600060055560206008553480156200002057600080fd5b50611004600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061999c80620000746000396000f3fe6080604052600436106101b8576000357c010000000000000000000000000000000000000000000000000000000090048063897f025111610109578063ba41e2e6116100a7578063e1207bee11610081578063e1207bee146106da578063e25a086614610703578063eafa23bd14610740578063f4fa9d031461076b576101b8565b8063ba41e2e614610623578063cb797d2f14610660578063d55c01f71461069d576101b8565b80639edd3441116100e35780639edd344114610553578063ac5d37231461057e578063b4e28edb146105bb578063b54138b0146105e6576101b8565b8063897f02511461049c5780638bc4827c146104d95780638c31f9ad14610516576101b8565b80634efcaed01161017657806376cc48391161015057806376cc4839146103bc578063772d0b53146103e5578063798133dd14610422578063819a3d621461045f576101b8565b80634efcaed01461031757806351cd3824146103545780636ccc29dc14610391576101b8565b8062f069d5146101bd578063063ff7ef146101fa57806308707893146102375780630a61c6f7146102745780630e36518a146102b157806318a56b67146102ee575b600080fd5b3480156101c957600080fd5b506101e460048036036101df9190810190618dd9565b610794565b6040516101f19190619551565b60405180910390f35b34801561020657600080fd5b50610221600480360361021c9190810190618cac565b610ac9565b60405161022e919061952f565b60405180910390f35b34801561024357600080fd5b5061025e60048036036102599190810190618eb1565b610ea2565b60405161026b9190619514565b60405180910390f35b34801561028057600080fd5b5061029b60048036036102969190810190618c58565b61138e565b6040516102a89190619551565b60405180910390f35b3480156102bd57600080fd5b506102d860048036036102d39190810190618dd9565b6113a2565b6040516102e59190619551565b60405180910390f35b3480156102fa57600080fd5b5061031560048036036103109190810190618cac565b61162d565b005b34801561032357600080fd5b5061033e60048036036103399190810190618cac565b611657565b60405161034b919061952f565b60405180910390f35b34801561036057600080fd5b5061037b60048036036103769190810190618cac565b611742565b604051610388919061952f565b60405180910390f35b34801561039d57600080fd5b506103a6611f41565b6040516103b39190619573565b60405180910390f35b3480156103c857600080fd5b506103e360048036036103de9190810190619037565b612046565b005b3480156103f157600080fd5b5061040c600480360361040791908101906190fa565b61251e565b6040516104199190619551565b60405180910390f35b34801561042e57600080fd5b5061044960048036036104449190810190618ced565b612c3c565b6040516104569190619514565b60405180910390f35b34801561046b57600080fd5b5061048660048036036104819190810190618d57565b612c9d565b6040516104939190619573565b60405180910390f35b3480156104a857600080fd5b506104c360048036036104be9190810190618e45565b612d72565b6040516104d09190619573565b60405180910390f35b3480156104e557600080fd5b5061050060048036036104fb9190810190618cac565b612e4a565b60405161050d919061952f565b60405180910390f35b34801561052257600080fd5b5061053d60048036036105389190810190618cac565b612ee0565b60405161054a919061952f565b60405180910390f35b34801561055f57600080fd5b50610568612f14565b604051610575919061952f565b60405180910390f35b34801561058a57600080fd5b506105a560048036036105a09190810190618d57565b6130d8565b6040516105b2919061974d565b60405180910390f35b3480156105c757600080fd5b506105d06132ae565b6040516105dd919061952f565b60405180910390f35b3480156105f257600080fd5b5061060d60048036036106089190810190618f74565b613564565b60405161061a9190619551565b60405180910390f35b34801561062f57600080fd5b5061064a60048036036106459190810190618d57565b61383a565b6040516106579190619514565b60405180910390f35b34801561066c57600080fd5b5061068760048036036106829190810190618cac565b6138cf565b604051610694919061952f565b60405180910390f35b3480156106a957600080fd5b506106c460048036036106bf9190810190618cac565b61393a565b6040516106d1919061952f565b60405180910390f35b3480156106e657600080fd5b5061070160048036036106fc9190810190618cac565b614be8565b005b34801561070f57600080fd5b5061072a60048036036107259190810190618cac565b614c42565b604051610737919061952f565b60405180910390f35b34801561074c57600080fd5b506107556154af565b604051610762919061952f565b60405180910390f35b34801561077757600080fd5b50610792600480360361078d9190810190618cac565b615765565b005b606060006003846040518082805190602001908083835b6020831015156107d057805182526020820191506020810190506020830392506107ab565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561091357610866846001615778565b9050806003856040518082805190602001908083835b6020831015156108a1578051825260208201915060208101905060208303925061087c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615610ab657836000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b6020831015156109e157805182526020820191506020810190506020830392506109bc565b6001836020036101000a0380198251168184511680821785525050505050509050018061993d6026913960260182805460018160011615610100020316600290048015610a655780601f10610a43576101008083540402835291820191610a65565b820191906000526020600020905b815481529060010190602001808311610a51575b5050925050506040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aad9190619573565b60405180910390fd5b610ac08184615bad565b91505092915050565b6060806001604051908082528060200260200182016040528015610b0157816020015b6060815260200190600190039081610aec5790505b5090506040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250816000815181101515610b4957fe5b9060200190602002018190525060018351141515610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b93906196ed565b60405180910390fd5b6060836000815181101515610bad57fe5b906020019060200201519050610bc281615cb9565b1515610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa9061966d565b60405180910390fd5b600180826040518082805190602001908083835b602083101515610c3c5780518252602082019150602081019050602083039250610c17565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff161415610c93578192505050610e9d565b60026001826040518082805190602001908083835b602083101515610ccd5780518252602082019150602081019050602083039250610ca8565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff161415610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c9061962d565b60405180910390fd5b426001826040518082805190602001908083835b602083101515610d8e5780518252602082019150602081019050602083039250610d69565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060050181905550600180826040518082805190602001908083835b602083101515610e015780518252602082019150602081019050602083039250610ddc565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160006101000a81548160ff021916908360ff160217905550610e5881615d34565b6007819080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190610e9592919061866b565b505081925050505b919050565b600080610eb0866000615778565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610f3a57506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b1561108e57856000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160405160200180838051",
        "90602001908083835b602083101515610fb95780518252602082019150602081019050602083039250610f94565b6001836020036101000a0380198251168184511680821785525050505050509050018061993d602691396026018280546001816001161561010002031660029004801561103d5780601f1061101b57610100808354040283529182019161103d565b820191906000526020600020905b815481529060010190602001808311611029575b5050925050506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110859190619573565b60405180910390fd5b600061109985612c3c565b90506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a216464b89896110e686615eda565b896040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161112294939291906195cc565b602060405180830381600087803b15801561113c57600080fd5b505af1158015611150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111749190810190618d2e565b90508060011415156112d6578787826040516020018084805190602001908083835b6020831015156111bb5780518252602082019150602081019050602083039250611196565b6001836020036101000a038019825116818451168082178552505050505050905001807f3a0000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b6020831015156112365780518252602082019150602081019050602083039250611211565b6001836020036101000a038019825116818451168082178552505050505050905001807f20756e61626c6520726567697374657220746f20636e732c206572726f723a2081525060200182815260200193505050506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9190619573565b60405180910390fd5b816003896040518082805190602001908083835b60208310151561130f57805182526020820191506020810190506020830392506112ea565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550819350505050949350505050565b606061139a8383615bad565b905092915050565b606060006003846040518082805190602001908083835b6020831015156113de57805182526020820191506020810190506020830392506113b9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561147757611474846001615778565b90505b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561161a57836000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b6020831015156115455780518252602082019150602081019050602083039250611520565b6001836020036101000a0380198251168184511680821785525050505050509050018061993d60269139602601828054600181600116156101000203166002900480156115c95780601f106115a75761010080835404028352918201916115c9565b820191906000526020600020905b8154815290600101906020018083116115b5575b5050925050506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116119190619573565b60405180910390fd5b6116248184615bad565b91505092915050565b61164e81600081518110151561163f57fe5b906020019060200201516130d8565b60088190555050565b60606009805480602002602001604051908101604052809291908181526020016000905b82821015611737578382906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117235780601f106116f857610100808354040283529160200191611723565b820191906000526020600020905b81548152906001019060200180831161170657829003601f168201915b50505050508152602001906001019061167b565b505050509050919050565b606080600160405190808252806020026020018201604052801561177a57816020015b60608152602001906001900390816117655790505b5090506040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152508160008151811015156117c257fe5b9060200190602002018190525060018351141515611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c906196ed565b60405180910390fd5b606083600081518110151561182657fe5b90602001906020020151905061183b81615cb9565b151561187c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118739061966d565b60405180910390fd5b600180826040518082805190602001908083835b6020831015156118b55780518252602082019150602081019050602083039250611890565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff16141561193d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119349061964d565b60405180910390fd5b60026001826040518082805190602001908083835b6020831015156119775780518252602082019150602081019050602083039250611952565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff1614156119ce578192505050611f3c565b60006001826040518082805190602001908083835b602083101515611a0857805182526020820191506020810190506020830392506119e3565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060080154905060008190505b6000811115611df15760006001846040518082805190602001908083835b602083101515611a8a5780518252602082019150602081019050602083039250611a65565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060070160018303815481101515611ad057fe5b906000526020600020015490506060611ae98583616184565b905060606002826040518082805190602001908083835b602083101515611b255780518252602082019150602081019050602083039250611b00565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bef5780601f10611bc457610100808354040283529160200191611bef565b820191906000526020600020905b815481529060010190602001808311611bd257829003601f168201915b5050505050905060006002836040518082805190602001908083835b602083101515611c305780518252602082019150602081019050602083039250611c0b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060606002846040518082805190602001908083835b602083101515611cc35780518252602082019150602081019050602083039250611c9e565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d8d5780601f10611d6257610100808354040283529160200191611d8d565b820191906000526020600020905b815481529060010190602001808311611d7057829003601f168201915b50505050509050611ddd82611dd7856040805190810160405280600781526020017f5f72657665727400000000000000000000000000000000000000000000000000815250616258565b836165c6565b505050505050808060019003915050611a47565b50426001836040518082805190602001908083835b602083101515611e2b5780518252602082019150602081019050602083039250611e06565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206006018190555060026001836040518082805190602001908083835b602083101515611e9f5780518252602082019150602081019050602083039250611e7a565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160006101000a81548160ff021916908360ff160217905550611ef682615d34565b6007829080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190611f3392919061866b565b50508293505050505b919050565b60606005546004541415611f8c576040805190810160405280600481526020017f6e756c6c00000000000000000000000000000000000000000000000000000000815250905061204356",
        "5b6006600454815481101515611f9d57fe5b906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561203b5780601f106120105761010080835404028352916020019161203b565b820191906000526020600020905b81548152906001019060200180831161201e57829003601f168201915b505050505090505b90565b6000612053856000615778565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156120dd57506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b1561223157846000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b60208310151561215c5780518252602082019150602081019050602083039250612137565b6001836020036101000a0380198251168184511680821785525050505050509050018061993d60269139602601828054600181600116156101000203166002900480156121e05780601f106121be5761010080835404028352918201916121e0565b820191906000526020600020905b8154815290600101906020018083116121cc575b5050925050506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122289190619573565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a216464b878787876040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016122b094939291906195cc565b602060405180830381600087803b1580156122ca57600080fd5b505af11580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123029190810190618d2e565b9050806001141515612464578585826040516020018084805190602001908083835b6020831015156123495780518252602082019150602081019050602083039250612324565b6001836020036101000a038019825116818451168082178552505050505050905001807f3a0000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b6020831015156123c4578051825260208201915060208101905060208303925061239f565b6001836020036101000a038019825116818451168082178552505050505050905001807f20756e61626c6520726567697374657220746f20636e732c206572726f723a2081525060200182815260200193505050506040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b9190619573565b60405180910390fd5b61246d8461685e565b6003876040518082805190602001908083835b6020831015156124a55780518252602082019150602081019050602083039250612480565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050565b6060600061252b85616c79565b905061253687615cb9565b1515612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e9061966d565b60405180910390fd5b600180886040518082805190602001908083835b6020831015156125b0578051825260208201915060208101905060208303925061258b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff161415612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f9061964d565b60405180910390fd5b60026001886040518082805190602001908083835b602083101515612672578051825260208201915060208101905060208303925061264d565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff1614156126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f19061962d565b60405180910390fd5b6127dd6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127d25780601f106127a7576101008083540402835291602001916127d2565b820191906000526020600020905b8154815290600101906020018083116127b557829003601f168201915b505050505088616c9b565b15156129095784876040516020018083805190602001908083835b60208310151561281d57805182526020820191506020810190506020830392506127f8565b6001836020036101000a038019825116818451168082178552505050505050905001807f697320756e7265676973746572656420696e207472616e73616374696f6e2000815250601f0182805190602001908083835b6020831015156128985780518252602082019150602081019050602083039250612873565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129009190619573565b60405180910390fd5b6129138787616cb6565b1515612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b906196cd565b60405180910390fd5b60a0604051908101604052808681526020014281526020018273ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815250600261299e8989616184565b6040518082805190602001908083835b6020831015156129d357805182526020820191506020810190506020830392506129ae565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000820151816000019080519060200190612a229291906186eb565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003019080519060200190612a909291906186eb565b506080820151816004019080519060200190612aad92919061876b565b5090505060006001886040518082805190602001908083835b602083101515612aeb5780518252602082019150602081019050602083039250612ac6565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801549050866001896040518082805190602001908083835b602083101515612b5d5780518252602082019150602081019050602083039250612b38565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060070182815481101515612ba057fe5b9060005260206000200181905550600181016001896040518082805190602001908083835b602083101515612bea5780518252602082019150602081019050602083039250612bc5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060080181905550612c2f8286866165c6565b9250505095945050505050565b600080600090508251602084016000f091506000823b119050801515612c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8e9061968d565b60405180910390fd5b50919050565b6060600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663819a3d62836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612d169190619573565b60006040518083038186803b158015612d2e57600080fd5b505afa158015612d42573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250612d6b9190810190618d98565b9050919050565b6060600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663897f025184846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612ded929190619595565b60006040518083038186803b158015612e0557600080fd5b505afa158015612e19573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250612e429190810190618d98565b905092915050565b6060806001604051908082528060200260200182016040528015612e8257816020015b6060815260200190600190039081612e6d5790505b5090506040805190810160405280600a81526020017f76312e302e302d72633400000000000000000000000000000000000000000000815250816000815181101515612eca57fe5b9060200190602002018190525080915050919050565b6060612eeb82611742565b50612f0d826000815181101515612efe57fe5b90602001906020020151616dc9565b9050919050565b6060806001604051908082528060200260200182016040528015612f4c57816020015b6060815260200190600190039081612f375790505b50905060606005546004541415612fb9576040805190810160405280600481526020017f6e756c6c0000000000000000000000000000000000000000000000",
        "0000000000815250826000815181101515612fa257fe5b9060200190602002018190525081925050506130d5565b6006600454815481101515612fca57fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130685780601f1061303d57610100808354040283529160200191613068565b820191906000526020600020905b81548152906001019060200180831161304b57829003601f168201915b50505050509050606060016040519080825280602002602001820160405280156130a657816020015b60608152602001906001900390816130915790505b509050818160008151811015156130b957fe5b906020019060200201819052506130cf8161393a565b93505050505b90565b60006060829050600080905060008251905060008090505b818110156132a2576030848281518110151561310857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff161015801561320657506039848281518110151561319257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1611155b15613295576030848281518110151561321b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360ff16600a84020192505b80806001019150506130f0565b50819350505050919050565b60608060016040519080825280602002602001820160405280156132e657816020015b60608152602001906001900390816132d15790505b50905060006007805490509050600081141561333357602060405190810160405280600081525082600081518110151561331c57fe5b906020019060200201819052508192505050613561565b6007600081548110151561334357fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133e15780601f106133b6576101008083540402835291602001916133e1565b820191906000526020600020905b8154815290600101906020018083116133c457829003601f168201915b50505050508260008151811015156133f557fe5b906020019060200201819052506000600190505b8181101561355a5782600081518110151561342057fe5b9060200190602002015160078281548110151561343957fe5b906000526020600020016040516020018083805190602001908083835b60208310151561347b5780518252602082019150602081019050602083039250613456565b6001836020036101000a038019825116818451168082178552505050505050905001807f20000000000000000000000000000000000000000000000000000000000000008152506001018280546001816001161561010002031660029004801561351c5780601f106134fa57610100808354040283529182019161351c565b820191906000526020600020905b815481529060010190602001808311613508575b50509250505060405160208183030381529060405283600081518110151561354057fe5b906020019060200201819052508080600101915050613409565b5081925050505b90565b6060600061357185616c79565b90506135b2866040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250616c9b565b156135ca576135c28185856165c6565b915050613832565b6135d386615cb9565b1515613614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360b9061966d565b60405180910390fd5b6136f76000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156136ec5780601f106136c1576101008083540402835291602001916136ec565b820191906000526020600020905b8154815290600101906020018083116136cf57829003601f168201915b505050505087616c9b565b15156138235784866040516020018083805190602001908083835b6020831015156137375780518252602082019150602081019050602083039250613712565b6001836020036101000a038019825116818451168082178552505050505050905001807f697320756e7265676973746572656420696e207472616e73616374696f6e2000815250601f0182805190602001908083835b6020831015156137b2578051825260208201915060208101905060208303925061378d565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161381a9190619573565b60405180910390fd5b61382e8185856165c6565b9150505b949350505050565b60006003826040518082805190602001908083835b602083101515613874578051825260208201915060208101905060208303925061384f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b606080600160405190808252806020026020018201604052801561390757816020015b60608152602001906001900390816138f25790505b509050613915600854616fb6565b81600081518110151561392457fe5b9060200190602002018190525080915050919050565b606080600160405190808252806020026020018201604052801561397257816020015b606081526020019060019003908161395d5790505b509050600183511415156139bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139b2906196ed565b60405180910390fd5b60608360008151811015156139cc57fe5b9060200190602002015190506139e181615cb9565b1515613a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a199061966d565b60405180910390fd5b60006001826040518082805190602001908083835b602083101515613a5c5780518252602082019150602081019050602083039250613a37565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180549050905060606001836040518082805190602001908083835b602083101515613ad25780518252602082019150602081019050602083039250613aad565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000016000815481101515613b1657fe5b9060005260206000200160405160200180807f5b00000000000000000000000000000000000000000000000000000000000000815250600101807f220000000000000000000000000000000000000000000000000000000000000081525060010182805460018160011615610100020316600290048015613bce5780601f10613bac576101008083540402835291820191613bce565b820191906000526020600020905b815481529060010190602001808311613bba575b5050807f220000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290506000600190505b82811015613dee57816001856040518082805190602001908083835b602083101515613c545780518252602082019150602081019050602083039250613c2f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000182815481101515613c9757fe5b906000526020600020016040516020018083805190602001908083835b602083101515613cd95780518252602082019150602081019050602083039250613cb4565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f220000000000000000000000000000000000000000000000000000000000000081525060010182805460018160011615610100020316600290048015613da25780601f10613d80576101008083540402835291820191613da2565b820191906000526020600020905b815481529060010190602001808311613d8e575b5050807f22000000000000000000000000000000000000000000000000000000000000008152506001019250505060405160208183030381529060405291508080600101915050613c13565b50806040516020018082805190602001908083835b602083101515613e285780518252602082019150602081019050602083039250613e03565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d00000000000000000000000000000000000000000000000000000000000000815250600101915050604051602081830303815290604052905060006001846040518082805190602001908083835b602083101515613ec05780518252602082019150602081019050602083039250613e9b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010180549050905060606001856040518082805190602001908083835b602083101515613f365780518252602082019150602081019050602083039250613f11565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016000815481101515613f7a57fe5b9060005260206000200160405160200180",
        "807f5b00000000000000000000000000000000000000000000000000000000000000815250600101807f2200000000000000000000000000000000000000000000000000000000000000815250600101828054600181600116156101000203166002900480156140325780601f10614010576101008083540402835291820191614032565b820191906000526020600020905b81548152906001019060200180831161401e575b5050807f220000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290506000600190505b8281101561425257816001876040518082805190602001908083835b6020831015156140b85780518252602082019150602081019050602083039250614093565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600101828154811015156140fb57fe5b906000526020600020016040516020018083805190602001908083835b60208310151561413d5780518252602082019150602081019050602083039250614118565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f2200000000000000000000000000000000000000000000000000000000000000815250600101828054600181600116156101000203166002900480156142065780601f106141e4576101008083540402835291820191614206565b820191906000526020600020905b8154815290600101906020018083116141f2575b5050807f22000000000000000000000000000000000000000000000000000000000000008152506001019250505060405160208183030381529060405291508080600101915050614077565b50806040516020018082805190602001908083835b60208310151561428c5780518252602082019150602081019050602083039250614267565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d000000000000000000000000000000000000000000000000000000000000008152506001019150506040516020818303038152906040529050846143726001876040518082805190602001908083835b6020831015156143265780518252602082019150602081019050602083039250614301565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff16616fb6565b84836143eb60018a6040518082805190602001908083835b6020831015156143af578051825260208201915060208101905060208303925061438a565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060040154616fb6565b61446260018b6040518082805190602001908083835b6020831015156144265780518252602082019150602081019050602083039250614401565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060050154616fb6565b6144d960018c6040518082805190602001908083835b60208310151561449d5780518252602082019150602081019050602083039250614478565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060060154616fb6565b61460e8c60018e6040518082805190602001908083835b60208310151561451557805182526020820191506020810190506020830392506144f0565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060070180548060200260200160405190810160405280929190818152602001828054801561459557602002820191906000526020600020905b815481526020019060010190808311614581575b505050505060018f6040518082805190602001908083835b6020831015156145d257805182526020820191506020810190506020830392506145ad565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060080154617080565b60405160200180807f7b227472616e73616374696f6e4944223a000000000000000000000000000000815250601101807f220000000000000000000000000000000000000000000000000000000000000081525060010189805190602001908083835b6020831015156146965780518252602082019150602081019050602083039250614671565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22737461747573223a000000000000000000000000000000000000000000000081525060090188805190602001908083835b6020831015156147395780518252602082019150602081019050602083039250614714565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22616c6c5061746873223a000000000000000000000000000000000000000000815250600b0187805190602001908083835b6020831015156147dc57805182526020820191506020810190506020830392506147b7565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f227061746873223a00000000000000000000000000000000000000000000000081525060080186805190602001908083835b60208310151561487f578051825260208201915060208101905060208303925061485a565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22737461727454696d657374616d70223a000000000000000000000000000000815250601101807f220000000000000000000000000000000000000000000000000000000000000081525060010185805190602001908083835b60208310151561494a5780518252602082019150602081019050602083039250614925565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22636f6d6d697454696d657374616d70223a0000000000000000000000000000815250601201807f220000000000000000000000000000000000000000000000000000000000000081525060010184805190602001908083835b602083101515614a1557805182526020820191506020810190506020830392506149f0565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22726f6c6c6261636b54696d657374616d70223a000000000000000000000000815250601401807f220000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b602083101515614ae05780518252602082019150602081019050602083039250614abb565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c00000000000000000000000000000000000000000000000000000000000081525060020182805190602001908083835b602083101515614b5b5780518252602082019150602081019050602083039250614b36565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d0000000000000000000000000000000000000000000000000000000000000081525060010198505050505050505050604051602081830303815290604052866000815181101515614bcd57fe5b90602001906020020181905250859650505050505050919050565b6009816000815181101515614bf957fe5b906020019060200201519080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190614c3d92919061866b565b505050565b6060806001604051908082528060200260200182016040528015614c7a57816020015b6060815260200190600190039081614c655790505b5090506040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250816000815181101515614cc257fe5b906020019060200201819052506000835190506004811015614d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614d10906196ed565b60405180910390fd5b6000614d3c856001815181101515614d2d57fe5b906020019060200201516130d8565b90506000811480614d5257508160028260020201115b15614d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614d89906196ed565b60405180910390fd5b6060856000815181101515614da357fe5b906020019060200201519050614db881615cb9565b15614eb6578060405160200180807f7472616e73616374696f6e200000000000000000000000000000000000000000815250600c0182805190602001908083835b602083101515614e1e5780518252602082019150602081019050602083039250614df9565b6001836020036101000a038019825116818451168082178552505050505050905001807f20616c7265616479206578697374730000000000000000000000000000000000815250600f019150506040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614ead9190619573565b60405180910390fd5b606082604051908082528060200260200182016040528015614ee75781602001602082028038833980820191505090505b5090506060600284860303604051908082528060200260200182016040528015614f2557816020015b6060815260200190600190039081614f105790505b509050606084604051908082528060200260200182016040528015614f5e57816020015b6060815260200190600190039081614f495790505b50905060008090505b85811015615292578960028201815181101515614f8057fe5b9060200190602002015182",
        "82815181101515614f9857fe5b906020019060200201819052506000614fca8b60028401815181101515614fbb57fe5b90602001906020020151616c79565b9050808583815181101515614fdb57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156151d4578a6002830181518110151561507c57fe5b906020019060200201516000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b6020831015156150ff57805182526020820191506020810190506020830392506150da565b6001836020036101000a0380198251168184511680821785525050505050509050018061993d60269139602601828054600181600116156101000203166002900480156151835780601f10615161576101008083540402835291820191615183565b820191906000526020600020905b81548152906001019060200180831161516f575b5050925050506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016151cb9190619573565b60405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550856000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101908051906020019061528392919061866b565b50508080600101915050614f67565b5060008090505b8560028803038110156152eb57898660028301018151811015156152b957fe5b9060200190602002015183828151811015156152d157fe5b906020019060200201819052508080600101915050615299565b50606060085460405190808252806020026020018201604052801561531f5781602001602082028038833980820191505090505b50905061012060405190810160405280848152602001838152602001858152602001600060ff168152602001428152602001600081526020016000815260200182815260200160008152506001866040518082805190602001908083835b6020831015156153a2578051825260208201915060208101905060208303925061537d565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008201518160000190805190602001906153f19291906187eb565b50602082015181600101908051906020019061540e9291906187eb565b50604082015181600201908051906020019061542b92919061884b565b5060608201518160030160006101000a81548160ff021916908360ff1602179055506080820151816004015560a0820151816005015560c0820151816006015560e08201518160070190805190602001906154879291906188d5565b50610100820151816008015590505061549f85617901565b8798505050505050505050919050565b60608060016040519080825280602002602001820160405280156154e757816020015b60608152602001906001900390816154d25790505b50905060006006805490509050600081141561553457602060405190810160405280600081525082600081518110151561551d57fe5b906020019060200201819052508192505050615762565b6006600081548110151561554457fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156155e25780601f106155b7576101008083540402835291602001916155e2565b820191906000526020600020905b8154815290600101906020018083116155c557829003601f168201915b50505050508260008151811015156155f657fe5b906020019060200201819052506000600190505b8181101561575b5782600081518110151561562157fe5b9060200190602002015160068281548110151561563a57fe5b906000526020600020016040516020018083805190602001908083835b60208310151561567c5780518252602082019150602081019050602083039250615657565b6001836020036101000a038019825116818451168082178552505050505050905001807f20000000000000000000000000000000000000000000000000000000000000008152506001018280546001816001161561010002031660029004801561571d5780601f106156fb57610100808354040283529182019161571d565b820191906000526020600020905b815481529060010190602001808311615709575b50509250505060405160208183030381529060405283600081518110151561574157fe5b90602001906020020181905250808060010191505061560a565b5081925050505b90565b60006009816157749190618922565b5050565b60006060600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663819a3d62856040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016157f39190619573565b60006040518083038186803b15801561580b57600080fd5b505afa15801561581f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506158489190810190618d98565b905060608190506000815190506000615896836040805190810160405280600981526020017f2273736572646461220000000000000000000000000000000000000000000000815250617955565b905060008114156158ef5785156158e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016158d99061970d565b60405180910390fd5b6000945050505050615ba7565b6060602a6040519080825280601f01601f1916602001820160405280156159255781602001600182028038833980820191505090505b509050600080905060008390505b84811015615ade577f30000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916868281518110151561598c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148015615ac457507f78000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168660018301815181101515615a5557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15615ad157809150615ade565b8080600101915050615933565b5060008090505b602a811015615b945785818301815181101515615afe57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028382815181101515615b5757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050615ae5565b50615b9e8261685e565b96505050505050505b92915050565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083101515615bfe5780518252602082019150602081019050602083039250615bd9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615c60576040519150601f19603f3d011682016040523d82523d6000602084013e615c65565b606091505b508093508192505050801515615cb257816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615ca99190619573565b60405180910390fd5b5092915050565b6000806001836040518082805190602001908083835b602083101515615cf45780518252602082019150602081019050602083039250615ccf565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004015414159050919050565b60006001826040518082805190602001908083835b602083101515615d6e5780518252602082019150602081019050602083039250615d49565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060020180549050905060008090505b81811015615ed55760006001846040518082805190602001908083835b602083101515615df25780518252602082019150602081019050602083039250615dcd565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060020182815481101515615e3557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff0219169055600182016000615ec5919061894e565b5050508080600101915050615db0565b505050565b60608060286040519080825280601f01601f191660200182016040528015615f115781602001600182028038833980820191505090505b50905060008090505b60148110156160e65760008160130360080260020a8573ffffffffffffffffffffffffffffffffffffffff16811515615f4f57fe5b047f010000000000000000000000000000000000000000000000000000000000000002905060006010827f0100000000000000000000000000000000",
        "000000000000000000000000000000900460ff16811515615fa857fe5b047f01000000000000000000000000000000000000000000000000000000000000000290506000817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f010000000000000000000000000000000000000000000000000000000000000002905061604882617b8b565b858560020281518110151561605957fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061609281617b8b565b85600186600202018151811015156160a657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080600101915050615f1a565b508060405160200180807f307800000000000000000000000000000000000000000000000000000000000081525060020182805190602001908083835b6020831015156161485780518252602082019150602081019050602083039250616123565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052915050919050565b60608261619083616fb6565b6040516020018083805190602001908083835b6020831015156161c857805182526020820191506020810190506020830392506161a3565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b60208310151561621b57805182526020820191506020810190506020830392506161f6565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b606080839050606083905060008251905060008251905060608183016040519080825280601f01601f1916602001820160405280156162a65781602001600182028038833980820191505090505b50905060007f280000000000000000000000000000000000000000000000000000000000000090506000809050600080905060008090505b8681101561644257837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916898281518110151561631757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561642d57888181518110151561639957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000285848060010195508151811015156163f857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350616435565b809150616442565b80806001019150506162de565b5060008090505b858110156164fb57878181518110151561645f57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000285848060010195508151811015156164be57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050616449565b5060008190505b868110156165b457888181518110151561651857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002858480600101955081518110151561657757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050616502565b50839850505050505050505092915050565b60608083604051602401604051602081830303815290604052906040518082805190602001908083835b60208310151561661557805182526020820191506020810190506020830392506165f0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008573ffffffffffffffffffffffffffffffffffffffff1682856040516020018083805190602001908083835b6020831015156166e457805182526020820191506020810190506020830392506166bf565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156167375780518252602082019150602081019050602083039250616712565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156167a1578051825260208201915060208101905060208303925061677c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114616803576040519150601f19603f3d011682016040523d82523d6000602084013e616808565b606091505b50809450819250505080151561685557826040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161684c9190619573565b60405180910390fd5b50509392505050565b6000602a8251141515616964578160405160200180807f63616e6e6f7420636f7665727420000000000000000000000000000000000000815250600e0182805190602001908083835b6020831015156168cc57805182526020820191506020810190506020830392506168a7565b6001836020036101000a038019825116818451168082178552505050505050905001807f746f2062636f7320616464726573730000000000000000000000000000000000815250600f019150506040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161695b9190619573565b60405180910390fd5b60008090506000806000600290505b602a811015616c6d5761010084029350858181518110151561699157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1692508560018201815181101515616a1557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff16915060618373ffffffffffffffffffffffffffffffffffffffff1610158015616ac6575060668373ffffffffffffffffffffffffffffffffffffffff1611155b15616ad657605783039250616b70565b60418373ffffffffffffffffffffffffffffffffffffffff1610158015616b14575060468373ffffffffffffffffffffffffffffffffffffffff1611155b15616b2457603783039250616b6f565b60308373ffffffffffffffffffffffffffffffffffffffff1610158015616b62575060398373ffffffffffffffffffffffffffffffffffffffff1611155b15616b6e576030830392505b5b5b60618273ffffffffffffffffffffffffffffffffffffffff1610158015616bae575060668273ffffffffffffffffffffffffffffffffffffffff1611155b15616bbe57605782039150616c58565b60418273ffffffffffffffffffffffffffffffffffffffff1610158015616bfc575060468273ffffffffffffffffffffffffffffffffffffffff1611155b15616c0c57603782039150616c57565b60308273ffffffffffffffffffffffffffffffffffffffff1610158015616c4a575060398273ffffffffffffffffffffffffffffffffffffffff1611155b15616c56576030820391505b5b5b81601084020184019350600281019050616973565b50829350505050919050565b60006060616c8683617c5d565b9050616c93816001615778565b915050919050565b60008180519060200120838051906020012014905092915050565b6000806001846040518082805190602001908083835b602083101515616cf15780518252602082019150602081019050602083039250616ccc565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206008015490506000811480616dc057506001846040518082805190602001908083835b602083101515616d6c5780518252602082019150602081019050602083039250616d47565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060070160018203815481101515616db257fe5b906000526020600020015483115b91505092915050565b6060806001604051908082528060200260200182016040528015616e0157816020015b6060815260200190600190039081616dec5790505b5090506040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250816000815181101515616e4957fe5b906020019060200201819052506005546004541415616e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401616e94906196ad565b60405180910390fd5b616f5a6006600454815481101515616eb157fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616f4f5780601f10616f2457610100808354040283529160200191616f4f565b820191906000526020600020905b815481529060010190602001808311616f3257829003601f168201915b505050505084616c9b565b1515616f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401616f",
        "929061972d565b60405180910390fd5b60046000815480929190600101919050555080915050919050565b6060600080831415617000576040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525091505061707b565b5b600083111561706e57610100816001900481151561701b57fe5b0460010290507f01000000000000000000000000000000000000000000000000000000000000006030600a8581151561705057fe5b06010260010281179050600a8381151561706657fe5b049250617001565b61707781617e69565b9150505b919050565b606060008214156170c8576040805190810160405280601581526020017f227472616e73616374696f6e5374657073223a5b5d000000000000000000000081525090506178fa565b6173c760026170ef868660008151811015156170e057fe5b90602001906020020151616184565b6040518082805190602001908083835b60208310151561712457805182526020820191506020810190506020830392506170ff565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060a06040519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156171fc5780601f106171d1576101008083540402835291602001916171fc565b820191906000526020600020905b8154815290600101906020018083116171df57829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156172fe5780601f106172d3576101008083540402835291602001916172fe565b820191906000526020600020905b8154815290600101906020018083116172e157829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156173a05780601f10617375576101008083540402835291602001916173a0565b820191906000526020600020905b81548152906001019060200180831161738357829003601f168201915b5050505050815250508460008151811015156173b857fe5b90602001906020020151617f44565b60405160200180807f227472616e73616374696f6e5374657073223a5b00000000000000000000000081525060140182805190602001908083835b6020831015156174275780518252602082019150602081019050602083039250617402565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506000600190505b82811015617861578161776a600261749388888681518110151561748457fe5b90602001906020020151616184565b6040518082805190602001908083835b6020831015156174c857805182526020820191506020810190506020830392506174a3565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060a06040519081016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156175a05780601f10617575576101008083540402835291602001916175a0565b820191906000526020600020905b81548152906001019060200180831161758357829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156176a25780601f10617677576101008083540402835291602001916176a2565b820191906000526020600020905b81548152906001019060200180831161768557829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156177445780601f1061771957610100808354040283529160200191617744565b820191906000526020600020905b81548152906001019060200180831161772757829003601f168201915b505050505081525050868481518110151561775b57fe5b90602001906020020151617f44565b6040516020018083805190602001908083835b6020831015156177a2578051825260208201915060208101905060208303925061777d565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310151561781d57805182526020820191506020810190506020830392506177f8565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405291508080600101915050617464565b50806040516020018082805190602001908083835b60208310151561789b5780518252602082019150602081019050602083039250617876565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d0000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290505b9392505050565b600560008154809291906001019190505550600681908060018154018082558091505090600182039060005260206000200160009091929091909150908051906020019061795092919061866b565b505050565b6000808351905060008351905061796a618996565b610120604051908101604052807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b8152509050600083905060008090505b600082138015617a0257508381125b15617b64577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811480617b2b57508681815181101515617a3e57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168860018403815181101515617abc57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15617b46578180600190039250508080600101915050617b5f565b8281600981101515617b5457fe5b602002015160000b90505b6179f3565b83811415617b7b5783820195505050505050617b85565b6000955050505050505b92915050565b6000600a827f0100000000000000000000000000000000000000000000000000000000000000900460ff161015617c0c576030827f01000000000000000000000000000000000000000000000000000000000000009004017f0100000000000000000000000000000000000000000000000000000000000000029050617c58565b6057827f01000000000000000000000000000000000000000000000000000000000000009004017f01000000000000000000000000000000000000000000000000000000000000000290505b919050565b6060808290506000815190506000809050600080905060006001840390505b6000811115617d6a577f2e000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168582815181101515617cd657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415617d5457600181019150617d6a565b8280600101935050808060019003915050617c7c565b506060826040519080825280601f01601f191660200182016040528015617da05781602001600182028038833980820191505090505b50905060008090505b83811015617e5b578583806001019450815181101515617dc557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028282815181101515617e1e57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050617da9565b508095505050505050919050565b606080602060ff166040519080825280601f01601f191660200182016040528015617ea35781602001600182028038833980820191505090505b5090506000602060ff16905060008090505b81811015617f39578481602081101515617ecb57fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000028382815181101515617efc57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050617eb5565b508192505050919050565b6060617f4f82616fb6565b617f5c8460400151615eda565b8460000151617f6e8660200151616fb6565b8660600151617f808860800151618440565b60405160200180807f7b22",
        "736571223a0000000000000000000000000000000000000000000000000081525060070187805190602001908083835b602083101515617fe05780518252602082019150602081019050602083039250617fbb565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22636f6e7472616374223a000000000000000000000000000000000000000000815250600b01807f220000000000000000000000000000000000000000000000000000000000000081525060010186805190602001908083835b6020831015156180ab5780518252602082019150602081019050602083039250618086565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2270617468223a00000000000000000000000000000000000000000000000000815250600701807f220000000000000000000000000000000000000000000000000000000000000081525060010185805190602001908083835b6020831015156181765780518252602082019150602081019050602083039250618151565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2274696d657374616d70223a0000000000000000000000000000000000000000815250600c01807f220000000000000000000000000000000000000000000000000000000000000081525060010184805190602001908083835b602083101515618241578051825260208201915060208101905060208303925061821c565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2266756e63223a00000000000000000000000000000000000000000000000000815250600701807f220000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b60208310151561830c57805182526020820191506020810190506020830392506182e7565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2261726773223a00000000000000000000000000000000000000000000000000815250600701807f220000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831015156183d757805182526020820191506020810190506020830392506183b2565b6001836020036101000a038019825116818451168082178552505050505050905001807f227d0000000000000000000000000000000000000000000000000000000000008152506002019650505050505050604051602081830303815290604052905092915050565b60606000825190506060600282026040519080825280601f01601f1916602001820160405280156184805781602001600182028038833980820191505090505b50905060008090505b8281101561866057600085828151811015156184a157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002905060006010827f0100000000000000000000000000000000000000000000000000000000000000900460ff1681151561852257fe5b047f01000000000000000000000000000000000000000000000000000000000000000290506000817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f01000000000000000000000000000000000000000000000000000000000000000290506185c282617b8b565b85600286028151811015156185d357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061860c81617b8b565b856001600287020181518110151561862057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080600101915050618489565b508092505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106186ac57805160ff19168380011785556186da565b828001600101855582156186da579182015b828111156186d95782518255916020019190600101906186be565b5b5090506186e791906189ba565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061872c57805160ff191683800117855561875a565b8280016001018555821561875a579182015b8281111561875957825182559160200191906001019061873e565b5b50905061876791906189ba565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106187ac57805160ff19168380011785556187da565b828001600101855582156187da579182015b828111156187d95782518255916020019190600101906187be565b5b5090506187e791906189ba565b5090565b82805482825590600052602060002090810192821561883a579160200282015b828111156188395782518290805190602001906188299291906186eb565b509160200191906001019061880b565b5b50905061884791906189df565b5090565b8280548282559060005260206000209081019282156188c4579160200282015b828111156188c35782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061886b565b5b5090506188d19190618a0b565b5090565b828054828255906000526020600020908101928215618911579160200282015b828111156189105782518255916020019190600101906188f5565b5b50905061891e91906189ba565b5090565b8154818355818111156189495781836000526020600020918201910161894891906189df565b5b505050565b50805460018160011615610100020316600290046000825580601f106189745750618993565b601f01602090049060005260206000209081019061899291906189ba565b5b50565b61012060405190810160405280600990602082028038833980820191505090505090565b6189dc91905b808211156189d85760008160009055506001016189c0565b5090565b90565b618a0891905b80821115618a0457600081816189fb919061894e565b506001016189e5565b5090565b90565b618a4b91905b80821115618a4757600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101618a11565b5090565b90565b6000618a5a82356198c3565b905092915050565b600082601f8301121515618a7557600080fd5b8135618a88618a8382619795565b619768565b9150818183526020840193506020810190508360005b83811015618ace5781358601618ab48882618b42565b845260208401935060208301925050600181019050618a9e565b5050505092915050565b600082601f8301121515618aeb57600080fd5b8135618afe618af9826197bd565b619768565b91508082526020830160208301858383011115618b1a57600080fd5b618b258382846198e9565b50505092915050565b6000618b3a82516198d5565b905092915050565b600082601f8301121515618b5557600080fd5b8135618b68618b63826197e9565b619768565b91508082526020830160208301858383011115618b8457600080fd5b618b8f8382846198e9565b50505092915050565b600082601f8301121515618bab57600080fd5b8135618bbe618bb982619815565b619768565b91508082526020830160208301858383011115618bda57600080fd5b618be58382846198e9565b50505092915050565b600082601f8301121515618c0157600080fd5b8151618c14618c0f82619815565b619768565b91508082526020830160208301858383011115618c3057600080fd5b618c3b8382846198f8565b50505092915050565b6000618c5082356198df565b905092915050565b60008060408385031215618c6b57600080fd5b6000618c7985828601618a4e565b925050602083013567ffffffffffffffff811115618c9657600080fd5b618ca285828601618ad8565b9150509250929050565b600060208284031215618cbe57600080fd5b600082013567ffffffffffffffff811115618cd857600080fd5b618ce484828501618a62565b91505092915050565b600060208284031215618cff57600080fd5b600082013567ffffffffffffffff811115618d1957600080fd5b618d2584828501618ad8565b91505092915050565b600060208284031215618d4057600080fd5b6000618d4e84828501618b2e565b91505092915050565b600060208284031215618d6957600080fd5b600082013567ffffffffffffffff811115618d8357600080fd5b618d8f84828501618b98565b91505092915050565b600060208284031215618daa57600080fd5b600082015167ffffffffffffffff811115618dc457600080fd5b618dd084828501618bee565b91505092915050565b60008060408385031215618dec57600080fd5b600083013567ffffffffffffffff811115618e0657600080fd5b618e1285828601618b98565b925050602083013567ffffffffffffffff811115618e2f57600080fd5b618e3b85828601618ad8565b9150509250929050565b60008060408385031215618e5857600080fd5b600083013567ffffffffffffffff811115618e7257600080fd5b618e7e85828601618b98565b925050602083013567ffffffffffffffff811115618e9b57600080fd5b618ea785828601618b98565b9150509250929050565b60008060008060808587031215618ec757600080fd5b600085013567ffffffffffffffff811115618ee157600080fd5b618eed87828801618b98565b945050602085013567ffffffffffffffff811115618f0a57600080fd5b618f1687828801618b98565b935050604085013567ffffffffffffffff811115618f3357600080fd5b618f3f87828801618ad8565b925050606085013567ffffffffffffffff811115618f5c57600080fd5b618f6887828801618b98565b91505092959194509250565b60008060008060808587031215618f8a57600080fd5b60",
        "0085013567ffffffffffffffff811115618fa457600080fd5b618fb087828801618b98565b945050602085013567ffffffffffffffff811115618fcd57600080fd5b618fd987828801618b98565b935050604085013567ffffffffffffffff811115618ff657600080fd5b61900287828801618b98565b925050606085013567ffffffffffffffff81111561901f57600080fd5b61902b87828801618ad8565b91505092959194509250565b6000806000806080858703121561904d57600080fd5b600085013567ffffffffffffffff81111561906757600080fd5b61907387828801618b98565b945050602085013567ffffffffffffffff81111561909057600080fd5b61909c87828801618b98565b935050604085013567ffffffffffffffff8111156190b957600080fd5b6190c587828801618b98565b925050606085013567ffffffffffffffff8111156190e257600080fd5b6190ee87828801618b98565b91505092959194509250565b600080600080600060a0868803121561911257600080fd5b600086013567ffffffffffffffff81111561912c57600080fd5b61913888828901618b98565b955050602061914988828901618c44565b945050604086013567ffffffffffffffff81111561916657600080fd5b61917288828901618b98565b935050606086013567ffffffffffffffff81111561918f57600080fd5b61919b88828901618b98565b925050608086013567ffffffffffffffff8111156191b857600080fd5b6191c488828901618ad8565b9150509295509295909350565b6191da81619887565b82525050565b60006191eb8261984e565b8084526020840193508360208202850161920485619841565b60005b8481101561923d57838303885261921f8383516192ba565b925061922a8261987a565b9150602088019750600181019050619207565b508196508694505050505092915050565b600061925982619859565b80845261926d8160208601602086016198f8565b6192768161992b565b602085010191505092915050565b600061928f8261986f565b8084526192a38160208601602086016198f8565b6192ac8161992b565b602085010191505092915050565b60006192c582619864565b8084526192d98160208601602086016198f8565b6192e28161992b565b602085010191505092915050565b6000601f82527f7472616e73616374696f6e20686173206265656e20726f6c6c65646261636b006020830152604082019050919050565b6000601e82527f7472616e73616374696f6e20686173206265656e20636f6d6d697474656400006020830152604082019050919050565b6000601582527f7472616e73616374696f6e206e6f7420666f756e6400000000000000000000006020830152604082019050919050565b6000601682527f6465706c6f7920636f6e7472616374206661696c6564000000000000000000006020830152604082019050919050565b6000601e82527f64656c657465206e6f6e6578697374656e74207472616e73616374696f6e00006020830152604082019050919050565b6000602182527f7365712073686f756c642062652067726561746572207468616e206265666f7260208301527f65000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601182527f696e76616c696420617267756d656e74730000000000000000000000000000006020830152604082019050919050565b6000601d82527f746865206e616d6527732061646472657373206e6f742065786973742e0000006020830152604082019050919050565b6000601c82527f64656c65746520756e6d617463686564207472616e73616374696f6e000000006020830152604082019050919050565b61950e816198b9565b82525050565b600060208201905061952960008301846191d1565b92915050565b6000602082019050818103600083015261954981846191e0565b905092915050565b6000602082019050818103600083015261956b818461924e565b905092915050565b6000602082019050818103600083015261958d8184619284565b905092915050565b600060408201905081810360008301526195af8185619284565b905081810360208301526195c38184619284565b90509392505050565b600060808201905081810360008301526195e68187619284565b905081810360208301526195fa8186619284565b9050818103604083015261960e8185619284565b905081810360608301526196228184619284565b905095945050505050565b60006020820190508181036000830152619646816192f0565b9050919050565b6000602082019050818103600083015261966681619327565b9050919050565b600060208201905081810360008301526196868161935e565b9050919050565b600060208201905081810360008301526196a681619395565b9050919050565b600060208201905081810360008301526196c6816193cc565b9050919050565b600060208201905081810360008301526196e681619403565b9050919050565b6000602082019050818103600083015261970681619460565b9050919050565b6000602082019050818103600083015261972681619497565b9050919050565b60006020820190508181036000830152619746816194ce565b9050919050565b60006020820190506197626000830184619505565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561978b57600080fd5b8060405250919050565b600067ffffffffffffffff8211156197ac57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156197d457600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561980057600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561982c57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600061989282619899565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006198ce82619899565b9050919050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156199165780820151818401526020810190506198fb565b83811115619925576000848401525b50505050565b6000601f19601f830116905091905056fe206973206c6f636b656420627920756e66696e6973686564207472616e73616374696f6e3a20a265627a7a723058207f5ae35b674ce9bc084d29b2ca55b405bddfe6bdea8751aaa60757e59b5b79616c6578706572696d656e74616cf50037"
    };

    public static final String BINARY = String.join("", BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {
        "[{\"constant\":false,\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_argsWithMethodId\",\"type\":\"bytes\"}],\"name\":\"sendTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"commitTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_version\",\"type\":\"string\"},{\"name\":\"_bin\",\"type\":\"bytes\"},{\"name\":\"_abi\",\"type\":\"string\"}],\"name\":\"deployContractWithRegisterCNS\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"},{\"name\":\"_argsWithMethodId\",\"type\":\"bytes\"}],\"name\":\"sendTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_argsWithMethodId\",\"type\":\"bytes\"}],\"name\":\"constantCall\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"setMaxStep\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"getPaths\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"rollbackTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLatestTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_version\",\"type\":\"string\"},{\"name\":\"_addr\",\"type\":\"string\"},{\"name\":\"_abi\",\"type\":\"string\"}],\"name\":\"registerCNS\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_transactionID\",\"type\":\"string\"},{\"name\":\"_seq\",\"type\":\"uint256\"},{\"name\":\"_path\",\"type\":\"string\"},{\"name\":\"_func\",\"type\":\"string\"},{\"name\":\"_args\",\"type\":\"bytes\"}],\"name\":\"sendTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"bin\",\"type\":\"bytes\"}],\"name\":\"deployContract\",\"outputs\":[{\"name\":\"addr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"name\",\"type\":\"string\"}],\"name\":\"selectByName\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"}],\"name\":\"selectByNameAndVersion\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"getVersion\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"rollbackAndDeleteTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLatestTransactionInfo\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_str\",\"type\":\"string\"}],\"name\":\"stringToUint256\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getFinishedTransactionIDs\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_transactionID\",\"type\":\"string\"},{\"name\":\"_path\",\"type\":\"string\"},{\"name\":\"_func\",\"type\":\"string\"},{\"name\":\"_args\",\"type\":\"bytes\"}],\"name\":\"constantCall\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"}],\"name\":\"getAddressByNameByCache\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"getMaxStep\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"getTransactionInfo\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"addPath\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"startTransaction\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllTransactionIDs\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_args\",\"type\":\"string[]\"}],\"name\":\"deletePathList\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
    };

    public static final String ABI = String.join("", ABI_ARRAY);

    public static final TransactionDecoder transactionDecoder = new TransactionDecoder(ABI, BINARY);

    public static final String[] SM_BINARY_ARRAY = {
        "60806040526000600455600060055560206008553480156200002057600080fd5b50611004600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061999d80620000746000396000f3fe6080604052600436106101b9576000357c0100000000000000000000000000000000000000000000000000000000900480635f44bbcf11610109578063ae2d75b8116100a7578063bdf8bf1d11610081578063bdf8bf1d146106b5578063c3d0c64e146106f2578063ec72a4221461072f578063ef34fc161461076c576101b9565b8063ae2d75b814610624578063b21709d514610661578063b4fd5b3c1461068a576101b9565b8063919cedf0116100e3578063919cedf0146105585780639b977529146105815780639c98a7cb146105be578063ad316e58146105fb576101b9565b80635f44bbcf146104a157806378e911d7146104de57806386dd03fd1461051b576101b9565b80633b139e10116101765780634f174c2b116101505780634f174c2b146103bf578063530147b5146103fc57806354e0c2e61461042757806357d5b27414610464576101b9565b80633b139e101461030857806345350eb41461034557806349650a1614610382576101b9565b8063078af4af146101be5780630ae2d459146101fb5780631c8ab54e1461022657806325362ed8146102515780632e185ec61461028e578063332d0978146102cb575b600080fd5b3480156101ca57600080fd5b506101e560048036036101e09190810190618d58565b610795565b6040516101f29190619574565b60405180910390f35b34801561020757600080fd5b5061021061086a565b60405161021d9190619530565b60405180910390f35b34801561023257600080fd5b5061023b610b20565b6040516102489190619574565b60405180910390f35b34801561025d57600080fd5b5061027860048036036102739190810190618cad565b610c25565b6040516102859190619530565b60405180910390f35b34801561029a57600080fd5b506102b560048036036102b09190810190618d58565b610cbb565b6040516102c2919061974e565b60405180910390f35b3480156102d757600080fd5b506102f260048036036102ed91908101906190fb565b610e91565b6040516102ff9190619552565b60405180910390f35b34801561031457600080fd5b5061032f600480360361032a9190810190618cad565b6115af565b60405161033c9190619530565b60405180910390f35b34801561035157600080fd5b5061036c60048036036103679190810190618cad565b61169a565b6040516103799190619530565b60405180910390f35b34801561038e57600080fd5b506103a960048036036103a49190810190618d58565b611e99565b6040516103b69190619515565b60405180910390f35b3480156103cb57600080fd5b506103e660048036036103e19190810190618eb2565b611f2e565b6040516103f39190619515565b60405180910390f35b34801561040857600080fd5b5061041161241a565b60405161041e9190619530565b60405180910390f35b34801561043357600080fd5b5061044e60048036036104499190810190618cad565b6125de565b60405161045b9190619530565b60405180910390f35b34801561047057600080fd5b5061048b60048036036104869190810190618cad565b61388c565b6040516104989190619530565b60405180910390f35b3480156104ad57600080fd5b506104c860048036036104c39190810190618f75565b6140f9565b6040516104d59190619552565b60405180910390f35b3480156104ea57600080fd5b5061050560048036036105009190810190618cee565b6143cf565b6040516105129190619515565b60405180910390f35b34801561052757600080fd5b50610542600480360361053d9190810190618cad565b614430565b60405161054f9190619530565b60405180910390f35b34801561056457600080fd5b5061057f600480360361057a9190810190618cad565b61449b565b005b34801561058d57600080fd5b506105a860048036036105a39190810190618dda565b6144c5565b6040516105b59190619552565b60405180910390f35b3480156105ca57600080fd5b506105e560048036036105e09190810190618c59565b614750565b6040516105f29190619552565b60405180910390f35b34801561060757600080fd5b50610622600480360361061d9190810190619038565b614764565b005b34801561063057600080fd5b5061064b60048036036106469190810190618cad565b614c3c565b6040516106589190619530565b60405180910390f35b34801561066d57600080fd5b5061068860048036036106839190810190618cad565b614c70565b005b34801561069657600080fd5b5061069f614c83565b6040516106ac9190619530565b60405180910390f35b3480156106c157600080fd5b506106dc60048036036106d79190810190618cad565b614f39565b6040516106e99190619530565b60405180910390f35b3480156106fe57600080fd5b5061071960048036036107149190810190618dda565b615312565b6040516107269190619552565b60405180910390f35b34801561073b57600080fd5b5061075660048036036107519190810190618e46565b615647565b6040516107639190619574565b60405180910390f35b34801561077857600080fd5b50610793600480360361078e9190810190618cad565b61571f565b005b6060600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663078af4af836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161080e9190619574565b60006040518083038186803b15801561082657600080fd5b505afa15801561083a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506108639190810190618d99565b9050919050565b60608060016040519080825280602002602001820160405280156108a257816020015b606081526020019060019003908161088d5790505b5090506000600780549050905060008114156108ef5760206040519081016040528060008152508260008151811015156108d857fe5b906020019060200201819052508192505050610b1d565b600760008154811015156108ff57fe5b906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561099d5780601f106109725761010080835404028352916020019161099d565b820191906000526020600020905b81548152906001019060200180831161098057829003601f168201915b50505050508260008151811015156109b157fe5b906020019060200201819052506000600190505b81811015610b16578260008151811015156109dc57fe5b906020019060200201516007828154811015156109f557fe5b906000526020600020016040516020018083805190602001908083835b602083101515610a375780518252602082019150602081019050602083039250610a12565b6001836020036101000a038019825116818451168082178552505050505050905001807f200000000000000000000000000000000000000000000000000000000000000081525060010182805460018160011615610100020316600290048015610ad85780601f10610ab6576101008083540402835291820191610ad8565b820191906000526020600020905b815481529060010190602001808311610ac4575b505092505050604051602081830303815290604052836000815181101515610afc57fe5b9060200190602002018190525080806001019150506109c5565b5081925050505b90565b60606005546004541415610b6b576040805190810160405280600481526020017f6e756c6c000000000000000000000000000000000000000000000000000000008152509050610c22565b6006600454815481101515610b7c57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c1a5780601f10610bef57610100808354040283529160200191610c1a565b820191906000526020600020905b815481529060010190602001808311610bfd57829003601f168201915b505050505090505b90565b6060806001604051908082528060200260200182016040528015610c5d57816020015b6060815260200190600190039081610c485790505b5090506040805190810160405280600a81526020017f76312e302e302d72633400000000000000000000000000000000000000000000815250816000815181101515610ca557fe5b9060200190602002018190525080915050919050565b60006060829050600080905060008251905060008090505b81811015610e855760308482815181101515610ceb57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1610158015610de9575060398482815181101515610d7557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff1611155b15610e785760308482815181101515610dfe57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090040360ff16600a84020192505b8080600101915050610cd3565b50819350505050919050565b60606000610e9e85615779565b9050610ea98761579b565b1515610eea576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401610ee19061972e565b60405180910390fd5b600180886040518082805190602001908083835b602083101515610f235780518252602082019150602081019050602083039250610efe565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff161415610fab576040517fc703cb1200000000000000000000000000000000000000",
        "0000000000000000008152600401610fa29061962e565b60405180910390fd5b60026001886040518082805190602001908083835b602083101515610fe55780518252602082019150602081019050602083039250610fc0565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff16141561106d576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016110649061968e565b60405180910390fd5b6111506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111455780601f1061111a57610100808354040283529160200191611145565b820191906000526020600020905b81548152906001019060200180831161112857829003601f168201915b505050505088615816565b151561127c5784876040516020018083805190602001908083835b602083101515611190578051825260208201915060208101905060208303925061116b565b6001836020036101000a038019825116818451168082178552505050505050905001807f697320756e7265676973746572656420696e207472616e73616374696f6e2000815250601f0182805190602001908083835b60208310151561120b57805182526020820191506020810190506020830392506111e6565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016112739190619574565b60405180910390fd5b6112868787615831565b15156112c7576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016112be906196ee565b60405180910390fd5b60a0604051908101604052808681526020014281526020018273ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481525060026113118989615944565b6040518082805190602001908083835b6020831015156113465780518252602082019150602081019050602083039250611321565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600082015181600001908051906020019061139592919061866c565b506020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301908051906020019061140392919061866c565b5060808201518160040190805190602001906114209291906186ec565b5090505060006001886040518082805190602001908083835b60208310151561145e5780518252602082019150602081019050602083039250611439565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801549050866001896040518082805190602001908083835b6020831015156114d057805182526020820191506020810190506020830392506114ab565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206007018281548110151561151357fe5b9060005260206000200181905550600181016001896040518082805190602001908083835b60208310151561155d5780518252602082019150602081019050602083039250611538565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801819055506115a2828686615a18565b9250505095945050505050565b60606009805480602002602001604051908101604052809291908181526020016000905b8282101561168f578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561167b5780601f106116505761010080835404028352916020019161167b565b820191906000526020600020905b81548152906001019060200180831161165e57829003601f168201915b5050505050815260200190600101906115d3565b505050509050919050565b60608060016040519080825280602002602001820160405280156116d257816020015b60608152602001906001900390816116bd5790505b5090506040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525081600081518110151561171a57fe5b906020019060200201819052506001835114151561176d576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016117649061966e565b60405180910390fd5b606083600081518110151561177e57fe5b9060200190602002015190506117938161579b565b15156117d4576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016117cb9061972e565b60405180910390fd5b600180826040518082805190602001908083835b60208310151561180d57805182526020820191506020810190506020830392506117e8565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff161415611895576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161188c9061962e565b60405180910390fd5b60026001826040518082805190602001908083835b6020831015156118cf57805182526020820191506020810190506020830392506118aa565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff161415611926578192505050611e94565b60006001826040518082805190602001908083835b602083101515611960578051825260208201915060208101905060208303925061193b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060080154905060008190505b6000811115611d495760006001846040518082805190602001908083835b6020831015156119e257805182526020820191506020810190506020830392506119bd565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060070160018303815481101515611a2857fe5b906000526020600020015490506060611a418583615944565b905060606002826040518082805190602001908083835b602083101515611a7d5780518252602082019150602081019050602083039250611a58565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b475780601f10611b1c57610100808354040283529160200191611b47565b820191906000526020600020905b815481529060010190602001808311611b2a57829003601f168201915b5050505050905060006002836040518082805190602001908083835b602083101515611b885780518252602082019150602081019050602083039250611b63565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060606002846040518082805190602001908083835b602083101515611c1b5780518252602082019150602081019050602083039250611bf6565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ce55780601f10611cba57610100808354040283529160200191611ce5565b820191906000526020600020905b815481529060010190602001808311611cc857829003601f168201915b50505050509050611d3582611d2f856040805190810160405280600781526020017f5f72657665727400000000000000000000000000000000000000000000000000815250615cb0565b83615a18565b50505050505080806001900391505061199f565b50426001836040518082805190602001908083835b602083101515611d835780518252602082019150602081019050602083039250611d5e565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206006018190555060026001836040518082805190602001908083835b602083101515611df75780518252602082019150602081019050602083039250611dd2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160006101000a81548160ff021916908360ff160217905550611e4e8261601e565b6007829080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190611e8b92919061876c565b50508293505050505b919050565b60006003826040518082805190602001908083835b602083101515611ed35780518252602082019150602081019050602083039250611eae565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080611f3c8660006161c4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611fc657506000808273ffffffffffffffffffffffffffffffff",
        "ffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b1561211a57856000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b6020831015156120455780518252602082019150602081019050602083039250612020565b6001836020036101000a0380198251168184511680821785525050505050509050018061993e60269139602601828054600181600116156101000203166002900480156120c95780601f106120a75761010080835404028352918201916120c9565b820191906000526020600020905b8154815290600101906020018083116120b5575b5050925050506040516020818303038152906040526040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016121119190619574565b60405180910390fd5b6000612125856143cf565b90506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8eaa08d8989612172866165f9565b896040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016121ae94939291906195cd565b602060405180830381600087803b1580156121c857600080fd5b505af11580156121dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122009190810190618d2f565b9050806001141515612362578787826040516020018084805190602001908083835b6020831015156122475780518252602082019150602081019050602083039250612222565b6001836020036101000a038019825116818451168082178552505050505050905001807f3a0000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b6020831015156122c2578051825260208201915060208101905060208303925061229d565b6001836020036101000a038019825116818451168082178552505050505050905001807f20756e61626c6520726567697374657220746f20636e732c206572726f723a2081525060200182815260200193505050506040516020818303038152906040526040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016123599190619574565b60405180910390fd5b816003896040518082805190602001908083835b60208310151561239b5780518252602082019150602081019050602083039250612376565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550819350505050949350505050565b606080600160405190808252806020026020018201604052801561245257816020015b606081526020019060019003908161243d5790505b509050606060055460045414156124bf576040805190810160405280600481526020017f6e756c6c000000000000000000000000000000000000000000000000000000008152508260008151811015156124a857fe5b9060200190602002018190525081925050506125db565b60066004548154811015156124d057fe5b906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561256e5780601f106125435761010080835404028352916020019161256e565b820191906000526020600020905b81548152906001019060200180831161255157829003601f168201915b50505050509050606060016040519080825280602002602001820160405280156125ac57816020015b60608152602001906001900390816125975790505b509050818160008151811015156125bf57fe5b906020019060200201819052506125d5816125de565b93505050505b90565b606080600160405190808252806020026020018201604052801561261657816020015b60608152602001906001900390816126015790505b5090506001835114151561265f576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016126569061966e565b60405180910390fd5b606083600081518110151561267057fe5b9060200190602002015190506126858161579b565b15156126c6576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016126bd9061972e565b60405180910390fd5b60006001826040518082805190602001908083835b60208310151561270057805182526020820191506020810190506020830392506126db565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000180549050905060606001836040518082805190602001908083835b6020831015156127765780518252602082019150602081019050602083039250612751565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160008154811015156127ba57fe5b9060005260206000200160405160200180807f5b00000000000000000000000000000000000000000000000000000000000000815250600101807f2200000000000000000000000000000000000000000000000000000000000000815250600101828054600181600116156101000203166002900480156128725780601f10612850576101008083540402835291820191612872565b820191906000526020600020905b81548152906001019060200180831161285e575b5050807f220000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290506000600190505b82811015612a9257816001856040518082805190602001908083835b6020831015156128f857805182526020820191506020810190506020830392506128d3565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206000018281548110151561293b57fe5b906000526020600020016040516020018083805190602001908083835b60208310151561297d5780518252602082019150602081019050602083039250612958565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f220000000000000000000000000000000000000000000000000000000000000081525060010182805460018160011615610100020316600290048015612a465780601f10612a24576101008083540402835291820191612a46565b820191906000526020600020905b815481529060010190602001808311612a32575b5050807f220000000000000000000000000000000000000000000000000000000000000081525060010192505050604051602081830303815290604052915080806001019150506128b7565b50806040516020018082805190602001908083835b602083101515612acc5780518252602082019150602081019050602083039250612aa7565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d00000000000000000000000000000000000000000000000000000000000000815250600101915050604051602081830303815290604052905060006001846040518082805190602001908083835b602083101515612b645780518252602082019150602081019050602083039250612b3f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010180549050905060606001856040518082805190602001908083835b602083101515612bda5780518252602082019150602081019050602083039250612bb5565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206001016000815481101515612c1e57fe5b9060005260206000200160405160200180807f5b00000000000000000000000000000000000000000000000000000000000000815250600101807f220000000000000000000000000000000000000000000000000000000000000081525060010182805460018160011615610100020316600290048015612cd65780601f10612cb4576101008083540402835291820191612cd6565b820191906000526020600020905b815481529060010190602001808311612cc2575b5050807f220000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290506000600190505b82811015612ef657816001876040518082805190602001908083835b602083101515612d5c5780518252602082019150602081019050602083039250612d37565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060010182815481101515612d9f57fe5b906000526020600020016040516020018083805190602001908083835b602083101515612de15780518252602082019150602081019050602083039250612dbc565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f220000000000000000000000000000000000000000000000000000000000000081525060010182805460018160011615610100020316600290048015612eaa5780601f10612e88576101008083540402835291820191612eaa565b820191906000526020600020905b815481529060010190602001808311612e96575b5050807f22000000000000000000000000000000000000000000000000000000000000008152506001019250505060405160208183030381529060405291508080600101915050612d1b565b50806040516020018082805190602001908083835b602083101515612f305780518252602082019150602081019050602083039250612f0b565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d000000000000000000000000000000000000000000000000000000000000008152506001019150506040516020818303038152906040",
        "529050846130166001876040518082805190602001908083835b602083101515612fca5780518252602082019150602081019050602083039250612fa5565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff166168a3565b848361308f60018a6040518082805190602001908083835b602083101515613053578051825260208201915060208101905060208303925061302e565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600401546168a3565b61310660018b6040518082805190602001908083835b6020831015156130ca57805182526020820191506020810190506020830392506130a5565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600501546168a3565b61317d60018c6040518082805190602001908083835b602083101515613141578051825260208201915060208101905060208303925061311c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600601546168a3565b6132b28c60018e6040518082805190602001908083835b6020831015156131b95780518252602082019150602081019050602083039250613194565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060070180548060200260200160405190810160405280929190818152602001828054801561323957602002820191906000526020600020905b815481526020019060010190808311613225575b505050505060018f6040518082805190602001908083835b6020831015156132765780518252602082019150602081019050602083039250613251565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206008015461696d565b60405160200180807f7b227472616e73616374696f6e4944223a000000000000000000000000000000815250601101807f220000000000000000000000000000000000000000000000000000000000000081525060010189805190602001908083835b60208310151561333a5780518252602082019150602081019050602083039250613315565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22737461747573223a000000000000000000000000000000000000000000000081525060090188805190602001908083835b6020831015156133dd57805182526020820191506020810190506020830392506133b8565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22616c6c5061746873223a000000000000000000000000000000000000000000815250600b0187805190602001908083835b602083101515613480578051825260208201915060208101905060208303925061345b565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f227061746873223a00000000000000000000000000000000000000000000000081525060080186805190602001908083835b60208310151561352357805182526020820191506020810190506020830392506134fe565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22737461727454696d657374616d70223a000000000000000000000000000000815250601101807f220000000000000000000000000000000000000000000000000000000000000081525060010185805190602001908083835b6020831015156135ee57805182526020820191506020810190506020830392506135c9565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22636f6d6d697454696d657374616d70223a0000000000000000000000000000815250601201807f220000000000000000000000000000000000000000000000000000000000000081525060010184805190602001908083835b6020831015156136b95780518252602082019150602081019050602083039250613694565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f22726f6c6c6261636b54696d657374616d70223a000000000000000000000000815250601401807f220000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b602083101515613784578051825260208201915060208101905060208303925061375f565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c00000000000000000000000000000000000000000000000000000000000081525060020182805190602001908083835b6020831015156137ff57805182526020820191506020810190506020830392506137da565b6001836020036101000a038019825116818451168082178552505050505050905001807f7d000000000000000000000000000000000000000000000000000000000000008152506001019850505050505050505060405160208183030381529060405286600081518110151561387157fe5b90602001906020020181905250859650505050505050919050565b60608060016040519080825280602002602001820160405280156138c457816020015b60608152602001906001900390816138af5790505b5090506040805190810160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525081600081518110151561390c57fe5b906020019060200201819052506000835190506004811015613963576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161395a9061966e565b60405180910390fd5b600061398685600181518110151561397757fe5b90602001906020020151610cbb565b9050600081148061399c57508160028260020201115b156139dc576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016139d39061966e565b60405180910390fd5b60608560008151811015156139ed57fe5b906020019060200201519050613a028161579b565b15613b00578060405160200180807f7472616e73616374696f6e200000000000000000000000000000000000000000815250600c0182805190602001908083835b602083101515613a685780518252602082019150602081019050602083039250613a43565b6001836020036101000a038019825116818451168082178552505050505050905001807f20616c7265616479206578697374730000000000000000000000000000000000815250600f019150506040516020818303038152906040526040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401613af79190619574565b60405180910390fd5b606082604051908082528060200260200182016040528015613b315781602001602082028038833980820191505090505b5090506060600284860303604051908082528060200260200182016040528015613b6f57816020015b6060815260200190600190039081613b5a5790505b509050606084604051908082528060200260200182016040528015613ba857816020015b6060815260200190600190039081613b935790505b50905060008090505b85811015613edc578960028201815181101515613bca57fe5b906020019060200201518282815181101515613be257fe5b906020019060200201819052506000613c148b60028401815181101515613c0557fe5b90602001906020020151615779565b9050808583815181101515613c2557fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615613e1e578a60028301815181101515613cc657fe5b906020019060200201516000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b602083101515613d495780518252602082019150602081019050602083039250613d24565b6001836020036101000a0380198251168184511680821785525050505050509050018061993e6026913960260182805460018160011615610100020316600290048015613dcd5780601f10613dab576101008083540402835291820191613dcd565b820191906000526020600020905b815481529060010190602001808311613db9575b5050925050506040516020818303038152906040526040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401613e159190619574565b60405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550856000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190613ecd92919061876c565b50508080600101915050613bb1565b5060008090505b856002880303811015613f355789866002830101815181101515613f0357fe5b906020019060200201518382815181101515613f1b57fe5b906020019060200201819052508080600101915050613ee3565b506060600854604051908082528060200260200182016040528015613f695781602001602082028038833980820191505090505b50905061012060405190810160405280848152602001838152602001858152602001",
        "600060ff168152602001428152602001600081526020016000815260200182815260200160008152506001866040518082805190602001908083835b602083101515613fec5780518252602082019150602081019050602083039250613fc7565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600082015181600001908051906020019061403b9291906187ec565b5060208201518160010190805190602001906140589291906187ec565b50604082015181600201908051906020019061407592919061884c565b5060608201518160030160006101000a81548160ff021916908360ff1602179055506080820151816004015560a0820151816005015560c0820151816006015560e08201518160070190805190602001906140d19291906188d6565b5061010082015181600801559050506140e9856171ee565b8798505050505050505050919050565b6060600061410685615779565b9050614147866040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250615816565b1561415f57614157818585615a18565b9150506143c7565b6141688661579b565b15156141a9576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016141a09061972e565b60405180910390fd5b61428c6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156142815780601f1061425657610100808354040283529160200191614281565b820191906000526020600020905b81548152906001019060200180831161426457829003601f168201915b505050505087615816565b15156143b85784866040516020018083805190602001908083835b6020831015156142cc57805182526020820191506020810190506020830392506142a7565b6001836020036101000a038019825116818451168082178552505050505050905001807f697320756e7265676973746572656420696e207472616e73616374696f6e2000815250601f0182805190602001908083835b6020831015156143475780518252602082019150602081019050602083039250614322565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016143af9190619574565b60405180910390fd5b6143c3818585615a18565b9150505b949350505050565b600080600090508251602084016000f091506000823b11905080151561442a576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401614421906196ae565b60405180910390fd5b50919050565b606080600160405190808252806020026020018201604052801561446857816020015b60608152602001906001900390816144535790505b5090506144766008546168a3565b81600081518110151561448557fe5b9060200190602002018190525080915050919050565b6144bc8160008151811015156144ad57fe5b90602001906020020151610cbb565b60088190555050565b606060006003846040518082805190602001908083835b60208310151561450157805182526020820191506020810190506020830392506144dc565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561459a576145978460016161c4565b90505b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561473d57836000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b6020831015156146685780518252602082019150602081019050602083039250614643565b6001836020036101000a0380198251168184511680821785525050505050509050018061993e60269139602601828054600181600116156101000203166002900480156146ec5780601f106146ca5761010080835404028352918201916146ec565b820191906000526020600020905b8154815290600101906020018083116146d8575b5050925050506040516020818303038152906040526040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016147349190619574565b60405180910390fd5b6147478184617242565b91505092915050565b606061475c8383617242565b905092915050565b60006147718560006161c4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156147fb57506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff165b1561494f57846000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b60208310151561487a5780518252602082019150602081019050602083039250614855565b6001836020036101000a0380198251168184511680821785525050505050509050018061993e60269139602601828054600181600116156101000203166002900480156148fe5780601f106148dc5761010080835404028352918201916148fe565b820191906000526020600020905b8154815290600101906020018083116148ea575b5050925050506040516020818303038152906040526040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016149469190619574565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b8eaa08d878787876040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016149ce94939291906195cd565b602060405180830381600087803b1580156149e857600080fd5b505af11580156149fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614a209190810190618d2f565b9050806001141515614b82578585826040516020018084805190602001908083835b602083101515614a675780518252602082019150602081019050602083039250614a42565b6001836020036101000a038019825116818451168082178552505050505050905001807f3a0000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b602083101515614ae25780518252602082019150602081019050602083039250614abd565b6001836020036101000a038019825116818451168082178552505050505050905001807f20756e61626c6520726567697374657220746f20636e732c206572726f723a2081525060200182815260200193505050506040516020818303038152906040526040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401614b799190619574565b60405180910390fd5b614b8b8461734e565b6003876040518082805190602001908083835b602083101515614bc35780518252602082019150602081019050602083039250614b9e565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050565b6060614c478261169a565b50614c69826000815181101515614c5a57fe5b90602001906020020151617769565b9050919050565b6000600981614c7f9190618923565b5050565b6060806001604051908082528060200260200182016040528015614cbb57816020015b6060815260200190600190039081614ca65790505b509050600060068054905090506000811415614d08576020604051908101604052806000815250826000815181101515614cf157fe5b906020019060200201819052508192505050614f36565b60066000815481101515614d1857fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614db65780601f10614d8b57610100808354040283529160200191614db6565b820191906000526020600020905b815481529060010190602001808311614d9957829003601f168201915b5050505050826000815181101515614dca57fe5b906020019060200201819052506000600190505b81811015614f2f57826000815181101515614df557fe5b90602001906020020151600682815481101515614e0e57fe5b906000526020600020016040516020018083805190602001908083835b602083101515614e505780518252602082019150602081019050602083039250614e2b565b6001836020036101000a038019825116818451168082178552505050505050905001807f200000000000000000000000000000000000000000000000000000000000000081525060010182805460018160011615610100020316600290048015614ef15780601f10614ecf576101008083540402835291820191614ef1565b820191906000526020600020905b815481529060010190602001808311614edd575b505092505050604051602081830303815290604052836000815181101515614f1557fe5b906020019060200201819052508080600101915050614dde565b5081925050505b90565b6060806001604051908082528060200260200182016040528015614f7157816020015b6060815260200190600190039081614f5c5790505b5090506040805190810160405280600181526020017f30000000",
        "00000000000000000000000000000000000000000000000000000000815250816000815181101515614fb957fe5b906020019060200201819052506001835114151561500c576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016150039061966e565b60405180910390fd5b606083600081518110151561501d57fe5b9060200190602002015190506150328161579b565b1515615073576040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161506a9061972e565b60405180910390fd5b600180826040518082805190602001908083835b6020831015156150ac5780518252602082019150602081019050602083039250615087565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff16141561510357819250505061530d565b60026001826040518082805190602001908083835b60208310151561513d5780518252602082019150602081019050602083039250615118565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160009054906101000a900460ff1660ff1614156151c5576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016151bc9061968e565b60405180910390fd5b426001826040518082805190602001908083835b6020831015156151fe57805182526020820191506020810190506020830392506151d9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060050181905550600180826040518082805190602001908083835b602083101515615271578051825260208201915060208101905060208303925061524c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060030160006101000a81548160ff021916908360ff1602179055506152c88161601e565b600781908060018154018082558091505090600182039060005260206000200160009091929091909150908051906020019061530592919061876c565b505081925050505b919050565b606060006003846040518082805190602001908083835b60208310151561534e5780518252602082019150602081019050602083039250615329565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415615491576153e48460016161c4565b9050806003856040518082805190602001908083835b60208310151561541f57805182526020820191506020810190506020830392506153fa565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161561563457836000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020018083805190602001908083835b60208310151561555f578051825260208201915060208101905060208303925061553a565b6001836020036101000a0380198251168184511680821785525050505050509050018061993e60269139602601828054600181600116156101000203166002900480156155e35780601f106155c15761010080835404028352918201916155e3565b820191906000526020600020905b8154815290600101906020018083116155cf575b5050925050506040516020818303038152906040526040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161562b9190619574565b60405180910390fd5b61563e8184617242565b91505092915050565b6060600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec72a42284846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016156c2929190619596565b60006040518083038186803b1580156156da57600080fd5b505afa1580156156ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506157179190810190618d99565b905092915050565b600981600081518110151561573057fe5b90602001906020020151908060018154018082558091505090600182039060005260206000200160009091929091909150908051906020019061577492919061876c565b505050565b6000606061578683617956565b90506157938160016161c4565b915050919050565b6000806001836040518082805190602001908083835b6020831015156157d657805182526020820191506020810190506020830392506157b1565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206004015414159050919050565b60008180519060200120838051906020012014905092915050565b6000806001846040518082805190602001908083835b60208310151561586c5780518252602082019150602081019050602083039250615847565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600801549050600081148061593b57506001846040518082805190602001908083835b6020831015156158e757805182526020820191506020810190506020830392506158c2565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206007016001820381548110151561592d57fe5b906000526020600020015483115b91505092915050565b606082615950836168a3565b6040516020018083805190602001908083835b6020831015156159885780518252602082019150602081019050602083039250615963565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156159db57805182526020820191506020810190506020830392506159b6565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905092915050565b60608083604051602401604051602081830303815290604052906040518082805190602001908083835b602083101515615a675780518252602082019150602081019050602083039250615a42565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060008573ffffffffffffffffffffffffffffffffffffffff1682856040516020018083805190602001908083835b602083101515615b365780518252602082019150602081019050602083039250615b11565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b602083101515615b895780518252602082019150602081019050602083039250615b64565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b602083101515615bf35780518252602082019150602081019050602083039250615bce565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615c55576040519150601f19603f3d011682016040523d82523d6000602084013e615c5a565b606091505b508094508192505050801515615ca757826040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401615c9e9190619574565b60405180910390fd5b50509392505050565b606080839050606083905060008251905060008251905060608183016040519080825280601f01601f191660200182016040528015615cfe5781602001600182028038833980820191505090505b50905060007f280000000000000000000000000000000000000000000000000000000000000090506000809050600080905060008090505b86811015615e9a57837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168982815181101515615d6f57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515615e85578881815181101515615df157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028584806001019550815181101515615e5057fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350615e8d565b809150615e9a565b8080600101915050615d36565b5060008090505b85811015615f53578781815181101515615eb757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028584806001019550815181101515615f1657fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050615ea1565b5060008190505b8681101561600c578881815181101515615f7057fe5b9060200101517f0100000000000000000000000000000000000000",
        "00000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028584806001019550815181101515615fcf57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050615f5a565b50839850505050505050505092915050565b60006001826040518082805190602001908083835b6020831015156160585780518252602082019150602081019050602083039250616033565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060020180549050905060008090505b818110156161bf5760006001846040518082805190602001908083835b6020831015156160dc57805182526020820191506020810190506020830392506160b7565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390206002018281548110151561611f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff02191690556001820160006161af919061894f565b505050808060010191505061609a565b505050565b60006060600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663078af4af856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161623f9190619574565b60006040518083038186803b15801561625757600080fd5b505afa15801561626b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506162949190810190618d99565b9050606081905060008151905060006162e2836040805190810160405280600981526020017f2273736572646461220000000000000000000000000000000000000000000000815250617b62565b9050600081141561633b57851561632e576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016163259061964e565b60405180910390fd5b60009450505050506165f3565b6060602a6040519080825280601f01601f1916602001820160405280156163715781602001600182028038833980820191505090505b509050600080905060008390505b8481101561652a577f30000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191686828151811015156163d857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614801561651057507f78000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191686600183018151811015156164a157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561651d5780915061652a565b808060010191505061637f565b5060008090505b602a8110156165e0578581830181518110151561654a57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811015156165a357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050616531565b506165ea8261734e565b96505050505050505b92915050565b60608060286040519080825280601f01601f1916602001820160405280156166305781602001600182028038833980820191505090505b50905060008090505b60148110156168055760008160130360080260020a8573ffffffffffffffffffffffffffffffffffffffff1681151561666e57fe5b047f010000000000000000000000000000000000000000000000000000000000000002905060006010827f0100000000000000000000000000000000000000000000000000000000000000900460ff168115156166c757fe5b047f01000000000000000000000000000000000000000000000000000000000000000290506000817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f010000000000000000000000000000000000000000000000000000000000000002905061676782617d98565b858560020281518110151561677857fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506167b181617d98565b85600186600202018151811015156167c557fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080600101915050616639565b508060405160200180807f307800000000000000000000000000000000000000000000000000000000000081525060020182805190602001908083835b6020831015156168675780518252602082019150602081019050602083039250616842565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052915050919050565b60606000808314156168ed576040805190810160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250915050616968565b5b600083111561695b57610100816001900481151561690857fe5b0460010290507f01000000000000000000000000000000000000000000000000000000000000006030600a8581151561693d57fe5b06010260010281179050600a8381151561695357fe5b0492506168ee565b61696481617e6a565b9150505b919050565b606060008214156169b5576040805190810160405280601581526020017f227472616e73616374696f6e5374657073223a5b5d000000000000000000000081525090506171e7565b616cb460026169dc868660008151811015156169cd57fe5b90602001906020020151615944565b6040518082805190602001908083835b602083101515616a1157805182526020820191506020810190506020830392506169ec565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060a06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616ae95780601f10616abe57610100808354040283529160200191616ae9565b820191906000526020600020905b815481529060010190602001808311616acc57829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616beb5780601f10616bc057610100808354040283529160200191616beb565b820191906000526020600020905b815481529060010190602001808311616bce57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616c8d5780601f10616c6257610100808354040283529160200191616c8d565b820191906000526020600020905b815481529060010190602001808311616c7057829003601f168201915b505050505081525050846000815181101515616ca557fe5b90602001906020020151617f45565b60405160200180807f227472616e73616374696f6e5374657073223a5b00000000000000000000000081525060140182805190602001908083835b602083101515616d145780518252602082019150602081019050602083039250616cef565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506000600190505b8281101561714e57816170576002616d80888886815181101515616d7157fe5b90602001906020020151615944565b6040518082805190602001908083835b602083101515616db55780518252602082019150602081019050602083039250616d90565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060a06040519081016040529081600082018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616e8d5780601f10616e6257610100808354040283529160200191616e8d565b820191906000526020600020905b815481529060010190602001808311616e7057829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015616f8f5780601f10616f6457610100808354040283529160200191616f8f565b820191906000526020600020905b815481529060010190602001808311616f7257829003601f16",
        "8201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156170315780601f1061700657610100808354040283529160200191617031565b820191906000526020600020905b81548152906001019060200180831161701457829003601f168201915b505050505081525050868481518110151561704857fe5b90602001906020020151617f45565b6040516020018083805190602001908083835b60208310151561708f578051825260208201915060208101905060208303925061706a565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c0000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310151561710a57805182526020820191506020810190506020830392506170e5565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405291508080600101915050616d51565b50806040516020018082805190602001908083835b6020831015156171885780518252602082019150602081019050602083039250617163565b6001836020036101000a038019825116818451168082178552505050505050905001807f5d0000000000000000000000000000000000000000000000000000000000000081525060010191505060405160208183030381529060405290505b9392505050565b600560008154809291906001019190505550600681908060018154018082558091505090600182039060005260206000200160009091929091909150908051906020019061723d92919061876c565b505050565b606060008373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083101515617293578051825260208201915060208101905060208303925061726e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146172f5576040519150601f19603f3d011682016040523d82523d6000602084013e6172fa565b606091505b50809350819250505080151561734757816040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161733e9190619574565b60405180910390fd5b5092915050565b6000602a8251141515617454578160405160200180807f63616e6e6f7420636f7665727420000000000000000000000000000000000000815250600e0182805190602001908083835b6020831015156173bc5780518252602082019150602081019050602083039250617397565b6001836020036101000a038019825116818451168082178552505050505050905001807f746f2062636f7320616464726573730000000000000000000000000000000000815250600f019150506040516020818303038152906040526040517fc703cb1200000000000000000000000000000000000000000000000000000000815260040161744b9190619574565b60405180910390fd5b60008090506000806000600290505b602a81101561775d5761010084029350858181518110151561748157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff169250856001820181518110151561750557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f0100000000000000000000000000000000000000000000000000000000000000900460ff16915060618373ffffffffffffffffffffffffffffffffffffffff16101580156175b6575060668373ffffffffffffffffffffffffffffffffffffffff1611155b156175c657605783039250617660565b60418373ffffffffffffffffffffffffffffffffffffffff1610158015617604575060468373ffffffffffffffffffffffffffffffffffffffff1611155b156176145760378303925061765f565b60308373ffffffffffffffffffffffffffffffffffffffff1610158015617652575060398373ffffffffffffffffffffffffffffffffffffffff1611155b1561765e576030830392505b5b5b60618273ffffffffffffffffffffffffffffffffffffffff161015801561769e575060668273ffffffffffffffffffffffffffffffffffffffff1611155b156176ae57605782039150617748565b60418273ffffffffffffffffffffffffffffffffffffffff16101580156176ec575060468273ffffffffffffffffffffffffffffffffffffffff1611155b156176fc57603782039150617747565b60308273ffffffffffffffffffffffffffffffffffffffff161015801561773a575060398273ffffffffffffffffffffffffffffffffffffffff1611155b15617746576030820391505b5b5b81601084020184019350600281019050617463565b50829350505050919050565b60608060016040519080825280602002602001820160405280156177a157816020015b606081526020019060019003908161778c5790505b5090506040805190810160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152508160008151811015156177e957fe5b90602001906020020181905250600554600454141561783d576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401617834906196ce565b60405180910390fd5b6178fa600660045481548110151561785157fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156178ef5780601f106178c4576101008083540402835291602001916178ef565b820191906000526020600020905b8154815290600101906020018083116178d257829003601f168201915b505050505084615816565b151561793b576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016179329061970e565b60405180910390fd5b60046000815480929190600101919050555080915050919050565b6060808290506000815190506000809050600080905060006001840390505b6000811115617a63577f2e000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191685828151811015156179cf57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415617a4d57600181019150617a63565b8280600101935050808060019003915050617975565b506060826040519080825280601f01601f191660200182016040528015617a995781602001600182028038833980820191505090505b50905060008090505b83811015617b54578583806001019450815181101515617abe57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028282815181101515617b1757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050617aa2565b508095505050505050919050565b60008083519050600083519050617b77618997565b610120604051908101604052807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b81526020016000800b8152509050600083905060008090505b600082138015617c0f57508381125b15617d71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811480617d3857508681815181101515617c4b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168860018403815181101515617cc957fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b15617d53578180600190039250508080600101915050617d6c565b8281600981101515617d6157fe5b602002015160000b90505b617c00565b83811415617d885783820195505050505050617d92565b6000955050505050505b92915050565b6000600a827f0100000000000000000000000000000000000000000000000000000000000000900460ff161015617e19576030827f01000000000000000000000000000000000000000000000000000000000000009004017f0100000000000000000000000000000000000000000000000000000000000000029050617e65565b6057827f01000000000000000000000000000000000000000000000000000000000000009004017f01000000000000000000000000000000000000000000000000000000000000000290505b919050565b606080602060ff166040519080825280601f01601f191660200182016040528015617ea45781602001600182028038833980820191505090505b5090506000602060ff16905060008090505b81811015617f3a578481602081101515617ecc57fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000028382815181101515617efd57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050617eb6565b508192505050919050565b6060617f50826168a3565b617f5d84604001516165f9565b8460000151617f6f86602001516168a3565b8660600151617f818860800151618441565b60405160200180807f7b",
        "22736571223a0000000000000000000000000000000000000000000000000081525060070187805190602001908083835b602083101515617fe15780518252602082019150602081019050602083039250617fbc565b6001836020036101000a038019825116818451168082178552505050505050905001807f2c00000000000000000000000000000000000000000000000000000000000000815250600101807f22636f6e7472616374223a000000000000000000000000000000000000000000815250600b01807f220000000000000000000000000000000000000000000000000000000000000081525060010186805190602001908083835b6020831015156180ac5780518252602082019150602081019050602083039250618087565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2270617468223a00000000000000000000000000000000000000000000000000815250600701807f220000000000000000000000000000000000000000000000000000000000000081525060010185805190602001908083835b6020831015156181775780518252602082019150602081019050602083039250618152565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2274696d657374616d70223a0000000000000000000000000000000000000000815250600c01807f220000000000000000000000000000000000000000000000000000000000000081525060010184805190602001908083835b602083101515618242578051825260208201915060208101905060208303925061821d565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2266756e63223a00000000000000000000000000000000000000000000000000815250600701807f220000000000000000000000000000000000000000000000000000000000000081525060010183805190602001908083835b60208310151561830d57805182526020820191506020810190506020830392506182e8565b6001836020036101000a038019825116818451168082178552505050505050905001807f222c000000000000000000000000000000000000000000000000000000000000815250600201807f2261726773223a00000000000000000000000000000000000000000000000000815250600701807f220000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831015156183d857805182526020820191506020810190506020830392506183b3565b6001836020036101000a038019825116818451168082178552505050505050905001807f227d0000000000000000000000000000000000000000000000000000000000008152506002019650505050505050604051602081830303815290604052905092915050565b60606000825190506060600282026040519080825280601f01601f1916602001820160405280156184815781602001600182028038833980820191505090505b50905060008090505b8281101561866157600085828151811015156184a257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002905060006010827f0100000000000000000000000000000000000000000000000000000000000000900460ff1681151561852357fe5b047f01000000000000000000000000000000000000000000000000000000000000000290506000817f01000000000000000000000000000000000000000000000000000000000000009004601002837f01000000000000000000000000000000000000000000000000000000000000009004037f01000000000000000000000000000000000000000000000000000000000000000290506185c382617d98565b85600286028151811015156185d457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061860d81617d98565b856001600287020181518110151561862157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050808060010191505061848a565b508092505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106186ad57805160ff19168380011785556186db565b828001600101855582156186db579182015b828111156186da5782518255916020019190600101906186bf565b5b5090506186e891906189bb565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061872d57805160ff191683800117855561875b565b8280016001018555821561875b579182015b8281111561875a57825182559160200191906001019061873f565b5b50905061876891906189bb565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106187ad57805160ff19168380011785556187db565b828001600101855582156187db579182015b828111156187da5782518255916020019190600101906187bf565b5b5090506187e891906189bb565b5090565b82805482825590600052602060002090810192821561883b579160200282015b8281111561883a57825182908051906020019061882a92919061866c565b509160200191906001019061880c565b5b50905061884891906189e0565b5090565b8280548282559060005260206000209081019282156188c5579160200282015b828111156188c45782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061886c565b5b5090506188d29190618a0c565b5090565b828054828255906000526020600020908101928215618912579160200282015b828111156189115782518255916020019190600101906188f6565b5b50905061891f91906189bb565b5090565b81548183558181111561894a5781836000526020600020918201910161894991906189e0565b5b505050565b50805460018160011615610100020316600290046000825580601f106189755750618994565b601f01602090049060005260206000209081019061899391906189bb565b5b50565b61012060405190810160405280600990602082028038833980820191505090505090565b6189dd91905b808211156189d95760008160009055506001016189c1565b5090565b90565b618a0991905b80821115618a0557600081816189fc919061894f565b506001016189e6565b5090565b90565b618a4c91905b80821115618a4857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101618a12565b5090565b90565b6000618a5b82356198c4565b905092915050565b600082601f8301121515618a7657600080fd5b8135618a89618a8482619796565b619769565b9150818183526020840193506020810190508360005b83811015618acf5781358601618ab58882618b43565b845260208401935060208301925050600181019050618a9f565b5050505092915050565b600082601f8301121515618aec57600080fd5b8135618aff618afa826197be565b619769565b91508082526020830160208301858383011115618b1b57600080fd5b618b268382846198ea565b50505092915050565b6000618b3b82516198d6565b905092915050565b600082601f8301121515618b5657600080fd5b8135618b69618b64826197ea565b619769565b91508082526020830160208301858383011115618b8557600080fd5b618b908382846198ea565b50505092915050565b600082601f8301121515618bac57600080fd5b8135618bbf618bba82619816565b619769565b91508082526020830160208301858383011115618bdb57600080fd5b618be68382846198ea565b50505092915050565b600082601f8301121515618c0257600080fd5b8151618c15618c1082619816565b619769565b91508082526020830160208301858383011115618c3157600080fd5b618c3c8382846198f9565b50505092915050565b6000618c5182356198e0565b905092915050565b60008060408385031215618c6c57600080fd5b6000618c7a85828601618a4f565b925050602083013567ffffffffffffffff811115618c9757600080fd5b618ca385828601618ad9565b9150509250929050565b600060208284031215618cbf57600080fd5b600082013567ffffffffffffffff811115618cd957600080fd5b618ce584828501618a63565b91505092915050565b600060208284031215618d0057600080fd5b600082013567ffffffffffffffff811115618d1a57600080fd5b618d2684828501618ad9565b91505092915050565b600060208284031215618d4157600080fd5b6000618d4f84828501618b2f565b91505092915050565b600060208284031215618d6a57600080fd5b600082013567ffffffffffffffff811115618d8457600080fd5b618d9084828501618b99565b91505092915050565b600060208284031215618dab57600080fd5b600082015167ffffffffffffffff811115618dc557600080fd5b618dd184828501618bef565b91505092915050565b60008060408385031215618ded57600080fd5b600083013567ffffffffffffffff811115618e0757600080fd5b618e1385828601618b99565b925050602083013567ffffffffffffffff811115618e3057600080fd5b618e3c85828601618ad9565b9150509250929050565b60008060408385031215618e5957600080fd5b600083013567ffffffffffffffff811115618e7357600080fd5b618e7f85828601618b99565b925050602083013567ffffffffffffffff811115618e9c57600080fd5b618ea885828601618b99565b9150509250929050565b60008060008060808587031215618ec857600080fd5b600085013567ffffffffffffffff811115618ee257600080fd5b618eee87828801618b99565b945050602085013567ffffffffffffffff811115618f0b57600080fd5b618f1787828801618b99565b935050604085013567ffffffffffffffff811115618f3457600080fd5b618f4087828801618ad9565b925050606085013567ffffffffffffffff811115618f5d57600080fd5b618f6987828801618b99565b91505092959194509250565b60008060008060808587031215618f8b57600080fd5b",
        "600085013567ffffffffffffffff811115618fa557600080fd5b618fb187828801618b99565b945050602085013567ffffffffffffffff811115618fce57600080fd5b618fda87828801618b99565b935050604085013567ffffffffffffffff811115618ff757600080fd5b61900387828801618b99565b925050606085013567ffffffffffffffff81111561902057600080fd5b61902c87828801618ad9565b91505092959194509250565b6000806000806080858703121561904e57600080fd5b600085013567ffffffffffffffff81111561906857600080fd5b61907487828801618b99565b945050602085013567ffffffffffffffff81111561909157600080fd5b61909d87828801618b99565b935050604085013567ffffffffffffffff8111156190ba57600080fd5b6190c687828801618b99565b925050606085013567ffffffffffffffff8111156190e357600080fd5b6190ef87828801618b99565b91505092959194509250565b600080600080600060a0868803121561911357600080fd5b600086013567ffffffffffffffff81111561912d57600080fd5b61913988828901618b99565b955050602061914a88828901618c45565b945050604086013567ffffffffffffffff81111561916757600080fd5b61917388828901618b99565b935050606086013567ffffffffffffffff81111561919057600080fd5b61919c88828901618b99565b925050608086013567ffffffffffffffff8111156191b957600080fd5b6191c588828901618ad9565b9150509295509295909350565b6191db81619888565b82525050565b60006191ec8261984f565b8084526020840193508360208202850161920585619842565b60005b8481101561923e5783830388526192208383516192bb565b925061922b8261987b565b9150602088019750600181019050619208565b508196508694505050505092915050565b600061925a8261985a565b80845261926e8160208601602086016198f9565b6192778161992c565b602085010191505092915050565b600061929082619870565b8084526192a48160208601602086016198f9565b6192ad8161992c565b602085010191505092915050565b60006192c682619865565b8084526192da8160208601602086016198f9565b6192e38161992c565b602085010191505092915050565b6000601e82527f7472616e73616374696f6e20686173206265656e20636f6d6d697474656400006020830152604082019050919050565b6000601d82527f746865206e616d6527732061646472657373206e6f742065786973742e0000006020830152604082019050919050565b6000601182527f696e76616c696420617267756d656e74730000000000000000000000000000006020830152604082019050919050565b6000601f82527f7472616e73616374696f6e20686173206265656e20726f6c6c65646261636b006020830152604082019050919050565b6000601682527f6465706c6f7920636f6e7472616374206661696c6564000000000000000000006020830152604082019050919050565b6000601e82527f64656c657465206e6f6e6578697374656e74207472616e73616374696f6e00006020830152604082019050919050565b6000602182527f7365712073686f756c642062652067726561746572207468616e206265666f7260208301527f65000000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000601c82527f64656c65746520756e6d617463686564207472616e73616374696f6e000000006020830152604082019050919050565b6000601582527f7472616e73616374696f6e206e6f7420666f756e6400000000000000000000006020830152604082019050919050565b61950f816198ba565b82525050565b600060208201905061952a60008301846191d2565b92915050565b6000602082019050818103600083015261954a81846191e1565b905092915050565b6000602082019050818103600083015261956c818461924f565b905092915050565b6000602082019050818103600083015261958e8184619285565b905092915050565b600060408201905081810360008301526195b08185619285565b905081810360208301526195c48184619285565b90509392505050565b600060808201905081810360008301526195e78187619285565b905081810360208301526195fb8186619285565b9050818103604083015261960f8185619285565b905081810360608301526196238184619285565b905095945050505050565b60006020820190508181036000830152619647816192f1565b9050919050565b6000602082019050818103600083015261966781619328565b9050919050565b600060208201905081810360008301526196878161935f565b9050919050565b600060208201905081810360008301526196a781619396565b9050919050565b600060208201905081810360008301526196c7816193cd565b9050919050565b600060208201905081810360008301526196e781619404565b9050919050565b600060208201905081810360008301526197078161943b565b9050919050565b6000602082019050818103600083015261972781619498565b9050919050565b60006020820190508181036000830152619747816194cf565b9050919050565b60006020820190506197636000830184619506565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561978c57600080fd5b8060405250919050565b600067ffffffffffffffff8211156197ad57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff8211156197d557600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561980157600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561982d57600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b60006198938261989a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006198cf8261989a565b9050919050565b6000819050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156199175780820151818401526020810190506198fc565b83811115619926576000848401525b50505050565b6000601f19601f830116905091905056fe206973206c6f636b656420627920756e66696e6973686564207472616e73616374696f6e3a20a265627a7a723058206a1388db0595ca62a42a6eb4e7cbd470f4ce0fe437c35e3b9e2c386e874f5bb16c6578706572696d656e74616cf50037"
    };

    public static final String SM_BINARY = String.join("", SM_BINARY_ARRAY);

    public static final String FUNC_SENDTRANSACTION = "sendTransaction";

    public static final String FUNC_COMMITTRANSACTION = "commitTransaction";

    public static final String FUNC_DEPLOYCONTRACTWITHREGISTERCNS = "deployContractWithRegisterCNS";

    public static final String FUNC_CONSTANTCALL = "constantCall";

    public static final String FUNC_SETMAXSTEP = "setMaxStep";

    public static final String FUNC_GETPATHS = "getPaths";

    public static final String FUNC_ROLLBACKTRANSACTION = "rollbackTransaction";

    public static final String FUNC_GETLATESTTRANSACTION = "getLatestTransaction";

    public static final String FUNC_REGISTERCNS = "registerCNS";

    public static final String FUNC_DEPLOYCONTRACT = "deployContract";

    public static final String FUNC_SELECTBYNAME = "selectByName";

    public static final String FUNC_SELECTBYNAMEANDVERSION = "selectByNameAndVersion";

    public static final String FUNC_GETVERSION = "getVersion";

    public static final String FUNC_ROLLBACKANDDELETETRANSACTION = "rollbackAndDeleteTransaction";

    public static final String FUNC_GETLATESTTRANSACTIONINFO = "getLatestTransactionInfo";

    public static final String FUNC_STRINGTOUINT256 = "stringToUint256";

    public static final String FUNC_GETFINISHEDTRANSACTIONIDS = "getFinishedTransactionIDs";

    public static final String FUNC_GETADDRESSBYNAMEBYCACHE = "getAddressByNameByCache";

    public static final String FUNC_GETMAXSTEP = "getMaxStep";

    public static final String FUNC_GETTRANSACTIONINFO = "getTransactionInfo";

    public static final String FUNC_ADDPATH = "addPath";

    public static final String FUNC_STARTTRANSACTION = "startTransaction";

    public static final String FUNC_GETALLTRANSACTIONIDS = "getAllTransactionIDs";

    public static final String FUNC_DELETEPATHLIST = "deletePathList";

    @Deprecated
    protected WeCrossProxy(
            String contractAddress,
            Web3j web3j,
            Credentials credentials,
            BigInteger gasPrice,
            BigInteger gasLimit) {
        super(getBinary(), contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected WeCrossProxy(
            String contractAddress,
            Web3j web3j,
            Credentials credentials,
            ContractGasProvider contractGasProvider) {
        super(getBinary(), contractAddress, web3j, credentials, contractGasProvider);
    }

    @Deprecated
    protected WeCrossProxy(
            String contractAddress,
            Web3j web3j,
            TransactionManager transactionManager,
            BigInteger gasPrice,
            BigInteger gasLimit) {
        super(getBinary(), contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected WeCrossProxy(
            String contractAddress,
            Web3j web3j,
            TransactionManager transactionManager,
            ContractGasProvider contractGasProvider) {
        super(getBinary(), contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static String getBinary() {
        return (EncryptType.encryptType == EncryptType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public static TransactionDecoder getTransactionDecoder() {
        return transactionDecoder;
    }

    public RemoteCall<TransactionReceipt> sendTransaction(String _name, byte[] _argsWithMethodId) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void sendTransaction(
            String _name, byte[] _argsWithMethodId, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String sendTransactionSeq(String _name, byte[] _argsWithMethodId) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple2<String, byte[]> getSendTransactionStringBytesInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple2<String, byte[]>(
                (String) results.get(0).getValue(), (byte[]) results.get(1).getValue());
    }

    public Tuple1<byte[]> getSendTransactionStringBytesOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<byte[]>((byte[]) results.get(0).getValue());
    }

    public RemoteCall<TransactionReceipt> commitTransaction(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_COMMITTRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void commitTransaction(List<String> _args, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_COMMITTRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String commitTransactionSeq(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_COMMITTRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple1<List<String>> getCommitTransactionInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_COMMITTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public Tuple1<List<String>> getCommitTransactionOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_COMMITTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public RemoteCall<TransactionReceipt> deployContractWithRegisterCNS(
            String _name, String _version, byte[] _bin, String _abi) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(_bin),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void deployContractWithRegisterCNS(
            String _name,
            String _version,
            byte[] _bin,
            String _abi,
            TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(_bin),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String deployContractWithRegisterCNSSeq(
            String _name, String _version, byte[] _bin, String _abi) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(_bin),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple4<String, String, byte[], String> getDeployContractWithRegisterCNSInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<DynamicBytes>() {},
                                new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple4<String, String, byte[], String>(
                (String) results.get(0).getValue(),
                (String) results.get(1).getValue(),
                (byte[]) results.get(2).getValue(),
                (String) results.get(3).getValue());
    }

    public Tuple1<String> getDeployContractWithRegisterCNSOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACTWITHREGISTERCNS,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public RemoteCall<TransactionReceipt> sendTransactionByAddress(
            String _addr, byte[] _argsWithMethodId) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Address(_addr),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void sendTransactionByAddress(
            String _addr, byte[] _argsWithMethodId, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Address(_addr),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String sendTransactionByAddressSeq(String _addr, byte[] _argsWithMethodId) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Address(_addr),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple2<String, byte[]> getSendTransactionAddressBytesInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Address>() {},
                                new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple2<String, byte[]>(
                (String) results.get(0).getValue(), (byte[]) results.get(1).getValue());
    }

    public Tuple1<byte[]> getSendTransactionAddressBytesOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<byte[]>((byte[]) results.get(0).getValue());
    }

    public RemoteCall<byte[]> constantCall(String _name, byte[] _argsWithMethodId) {
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(
                                        _argsWithMethodId)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteCall<TransactionReceipt> setMaxStep(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_SETMAXSTEP,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void setMaxStep(List<String> _args, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_SETMAXSTEP,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String setMaxStepSeq(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_SETMAXSTEP,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple1<List<String>> getSetMaxStepInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_SETMAXSTEP,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public RemoteCall<List> getPaths(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_GETPATHS,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result =
                                (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<TransactionReceipt> rollbackTransaction(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKTRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void rollbackTransaction(List<String> _args, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKTRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String rollbackTransactionSeq(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKTRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple1<List<String>> getRollbackTransactionInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_ROLLBACKTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public Tuple1<List<String>> getRollbackTransactionOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_ROLLBACKTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public RemoteCall<String> getLatestTransaction() {
        final Function function =
                new Function(
                        FUNC_GETLATESTTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<TransactionReceipt> registerCNS(
            String _name, String _version, String _addr, String _abi) {
        final Function function =
                new Function(
                        FUNC_REGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_addr),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void registerCNS(
            String _name,
            String _version,
            String _addr,
            String _abi,
            TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_REGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_addr),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String registerCNSSeq(String _name, String _version, String _addr, String _abi) {
        final Function function =
                new Function(
                        FUNC_REGISTERCNS,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_version),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_addr),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_abi)),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple4<String, String, String, String> getRegisterCNSInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_REGISTERCNS,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple4<String, String, String, String>(
                (String) results.get(0).getValue(),
                (String) results.get(1).getValue(),
                (String) results.get(2).getValue(),
                (String) results.get(3).getValue());
    }

    public RemoteCall<TransactionReceipt> sendTransaction(
            String _transactionID, BigInteger _seq, String _path, String _func, byte[] _args) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_transactionID),
                                new org.fisco.bcos.web3j.abi.datatypes.generated.Uint256(_seq),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(_args)),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void sendTransaction(
            String _transactionID,
            BigInteger _seq,
            String _path,
            String _func,
            byte[] _args,
            TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_transactionID),
                                new org.fisco.bcos.web3j.abi.datatypes.generated.Uint256(_seq),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(_args)),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String sendTransactionSeq(
            String _transactionID, BigInteger _seq, String _path, String _func, byte[] _args) {
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_transactionID),
                                new org.fisco.bcos.web3j.abi.datatypes.generated.Uint256(_seq),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(_args)),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple5<String, BigInteger, String, String, byte[]>
            getSendTransactionStringUint256StringStringBytesInput(
                    TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Uint256>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<Utf8String>() {},
                                new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple5<String, BigInteger, String, String, byte[]>(
                (String) results.get(0).getValue(),
                (BigInteger) results.get(1).getValue(),
                (String) results.get(2).getValue(),
                (String) results.get(3).getValue(),
                (byte[]) results.get(4).getValue());
    }

    public Tuple1<byte[]> getSendTransactionStringUint256StringStringBytesOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_SENDTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<byte[]>((byte[]) results.get(0).getValue());
    }

    public RemoteCall<TransactionReceipt> deployContract(byte[] bin) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(bin)),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void deployContract(byte[] bin, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(bin)),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String deployContractSeq(byte[] bin) {
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(bin)),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple1<byte[]> getDeployContractInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<byte[]>((byte[]) results.get(0).getValue());
    }

    public Tuple1<String> getDeployContractOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_DEPLOYCONTRACT,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<String>((String) results.get(0).getValue());
    }

    public RemoteCall<String> selectByName(String name) {
        final Function function =
                new Function(
                        FUNC_SELECTBYNAME,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(name)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<String> selectByNameAndVersion(String name, String version) {
        final Function function =
                new Function(
                        FUNC_SELECTBYNAMEANDVERSION,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(name),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(version)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<List> getVersion(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_GETVERSION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result =
                                (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<TransactionReceipt> rollbackAndDeleteTransaction(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETETRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void rollbackAndDeleteTransaction(List<String> _args, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETETRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String rollbackAndDeleteTransactionSeq(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETETRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple1<List<String>> getRollbackAndDeleteTransactionInput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETETRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public Tuple1<List<String>> getRollbackAndDeleteTransactionOutput(
            TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_ROLLBACKANDDELETETRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public RemoteCall<List> getLatestTransactionInfo() {
        final Function function =
                new Function(
                        FUNC_GETLATESTTRANSACTIONINFO,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result =
                                (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<BigInteger> stringToUint256(String _str) {
        final Function function =
                new Function(
                        FUNC_STRINGTOUINT256,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_str)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {}));
        return executeRemoteCallSingleValueReturn(function, BigInteger.class);
    }

    public RemoteCall<List> getFinishedTransactionIDs() {
        final Function function =
                new Function(
                        FUNC_GETFINISHEDTRANSACTIONIDS,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result =
                                (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<byte[]> constantCall(
            String _transactionID, String _path, String _func, byte[] _args) {
        final Function function =
                new Function(
                        FUNC_CONSTANTCALL,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_transactionID),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_path),
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_func),
                                new org.fisco.bcos.web3j.abi.datatypes.DynamicBytes(_args)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<DynamicBytes>() {}));
        return executeRemoteCallSingleValueReturn(function, byte[].class);
    }

    public RemoteCall<String> getAddressByNameByCache(String _name) {
        final Function function =
                new Function(
                        FUNC_GETADDRESSBYNAMEBYCACHE,
                        Arrays.<Type>asList(
                                new org.fisco.bcos.web3j.abi.datatypes.Utf8String(_name)),
                        Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
        return executeRemoteCallSingleValueReturn(function, String.class);
    }

    public RemoteCall<List> getMaxStep(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_GETMAXSTEP,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result =
                                (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<List> getTransactionInfo(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_GETTRANSACTIONINFO,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result =
                                (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<TransactionReceipt> addPath(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_ADDPATH,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void addPath(List<String> _args, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_ADDPATH,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String addPathSeq(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_ADDPATH,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple1<List<String>> getAddPathInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_ADDPATH,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public RemoteCall<TransactionReceipt> startTransaction(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_STARTTRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void startTransaction(List<String> _args, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_STARTTRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String startTransactionSeq(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_STARTTRANSACTION,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple1<List<String>> getStartTransactionInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_STARTTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public Tuple1<List<String>> getStartTransactionOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function =
                new Function(
                        FUNC_STARTTRANSACTION,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    public RemoteCall<List> getAllTransactionIDs() {
        final Function function =
                new Function(
                        FUNC_GETALLTRANSACTIONIDS,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        return new RemoteCall<List>(
                new Callable<List>() {
                    @Override
                    @SuppressWarnings("unchecked")
                    public List call() throws Exception {
                        List<Type> result =
                                (List<Type>) executeCallSingleValueReturn(function, List.class);
                        return convertToNative(result);
                    }
                });
    }

    public RemoteCall<TransactionReceipt> deletePathList(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_DELETEPATHLIST,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public void deletePathList(List<String> _args, TransactionSucCallback callback) {
        final Function function =
                new Function(
                        FUNC_DELETEPATHLIST,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        asyncExecuteTransaction(function, callback);
    }

    public String deletePathListSeq(List<String> _args) {
        final Function function =
                new Function(
                        FUNC_DELETEPATHLIST,
                        Arrays.<Type>asList(
                                _args.isEmpty()
                                        ? org.fisco.bcos.web3j.abi.datatypes.DynamicArray.empty(
                                                "string[]")
                                        : new org.fisco.bcos.web3j.abi.datatypes.DynamicArray<
                                                org.fisco.bcos.web3j.abi.datatypes.Utf8String>(
                                                org.fisco.bcos.web3j.abi.Utils.typeMap(
                                                        _args,
                                                        org.fisco.bcos.web3j.abi.datatypes
                                                                .Utf8String.class))),
                        Collections.<TypeReference<?>>emptyList());
        return createTransactionSeq(function);
    }

    public Tuple1<List<String>> getDeletePathListInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function =
                new Function(
                        FUNC_DELETEPATHLIST,
                        Arrays.<Type>asList(),
                        Arrays.<TypeReference<?>>asList(
                                new TypeReference<DynamicArray<Utf8String>>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        ;
        return new Tuple1<List<String>>(
                convertToNative((List<Utf8String>) results.get(0).getValue()));
    }

    @Deprecated
    public static WeCrossProxy load(
            String contractAddress,
            Web3j web3j,
            Credentials credentials,
            BigInteger gasPrice,
            BigInteger gasLimit) {
        return new WeCrossProxy(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    @Deprecated
    public static WeCrossProxy load(
            String contractAddress,
            Web3j web3j,
            TransactionManager transactionManager,
            BigInteger gasPrice,
            BigInteger gasLimit) {
        return new WeCrossProxy(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static WeCrossProxy load(
            String contractAddress,
            Web3j web3j,
            Credentials credentials,
            ContractGasProvider contractGasProvider) {
        return new WeCrossProxy(contractAddress, web3j, credentials, contractGasProvider);
    }

    public static WeCrossProxy load(
            String contractAddress,
            Web3j web3j,
            TransactionManager transactionManager,
            ContractGasProvider contractGasProvider) {
        return new WeCrossProxy(contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static RemoteCall<WeCrossProxy> deploy(
            Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(
                WeCrossProxy.class, web3j, credentials, contractGasProvider, getBinary(), "");
    }

    public static RemoteCall<WeCrossProxy> deploy(
            Web3j web3j,
            TransactionManager transactionManager,
            ContractGasProvider contractGasProvider) {
        return deployRemoteCall(
                WeCrossProxy.class,
                web3j,
                transactionManager,
                contractGasProvider,
                getBinary(),
                "");
    }

    @Deprecated
    public static RemoteCall<WeCrossProxy> deploy(
            Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(
                WeCrossProxy.class, web3j, credentials, gasPrice, gasLimit, getBinary(), "");
    }

    @Deprecated
    public static RemoteCall<WeCrossProxy> deploy(
            Web3j web3j,
            TransactionManager transactionManager,
            BigInteger gasPrice,
            BigInteger gasLimit) {
        return deployRemoteCall(
                WeCrossProxy.class, web3j, transactionManager, gasPrice, gasLimit, getBinary(), "");
    }
}
